正在尝试查找2列之间匹配的字符的百分比。
表A
ID Name
1 RICK
2 PATRICK
3 MARK.HI
表B
ID Name
1 RICK
2 PATRCIK
3 MARK-HI
当我连接这两个表(A和B)时,如果列'Name‘匹配(表A中的'RICK’=表B中的‘RICK’),那么一个名为percentage的新列应该显示为100%。
当我连接两个表时,如果列'Name‘不匹配(表A中的’PATRICK‘在表B中<> 'PATRCIK’),它应该显示该列不匹配的大约百分比。
我正在试图弄清楚这些乱七八糟的数据。
发布于 2019-05-31 07:02:43
这个问题不是很清楚,但是我假设匹配的是两个表中的名称,并且其中一个表中可能有不在另一个表中的名称:
DDL
CREATE TABLE MyTab1
(
MyVAL NVARCHAR(20)
);
INSERT INTO MyTab1 VALUES ('Rick'),('Patrick'),('John'),('Jhon');
CREATE TABLE MyTab2
(
MyVAL NVARCHAR(20)
);
INSERT INTO MyTab2 VALUES ('Rick'),('Patrikc'),('Fred');
查询
DECLARE @TotalRecords DECIMAL= (
SELECT COUNT(*)
FROM (
SELECT b.MyVal AS Val1,
a.MyVAL AS Val2
FROM MyTab1 a
FULL JOIN Mytab2 b
ON a.MyVal = b.MyVal
) a
);
DECLARE @Matches DECIMAL = (
SELECT COUNT(*)
FROM (
SELECT b.MyVal AS Val1,
a.MyVAL AS Val2
FROM MyTab1 a
FULL JOIN Mytab2 b
ON a.MyVal = b.MyVal
) a
WHERE Val1 IS NOT NULL AND Val2 IS NOT NULL
);
SELECT (@Matches / @TotalRecords) * 100
在此示例中,返回的值为16.6%,因为这两个表中有6个唯一值,其中1在这两个表中是通用的- (1 / 6) * 100 = 16.6
https://stackoverflow.com/questions/56385942
复制相似问题