首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >T-SQL获取2列之间匹配的字符百分比

T-SQL获取2列之间匹配的字符百分比
EN

Stack Overflow用户
提问于 2019-05-31 05:37:34
回答 1查看 467关注 0票数 1

正在尝试查找2列之间匹配的字符的百分比。

表A

代码语言:javascript
复制
ID  Name
1   RICK
2   PATRICK
3   MARK.HI

表B

代码语言:javascript
复制
ID  Name
1   RICK
2   PATRCIK
3   MARK-HI

当我连接这两个表(A和B)时,如果列'Name‘匹配(表A中的'RICK’=表B中的‘RICK’),那么一个名为percentage的新列应该显示为100%。

当我连接两个表时,如果列'Name‘不匹配(表A中的’PATRICK‘在表B中<> 'PATRCIK’),它应该显示该列不匹配的大约百分比。

我正在试图弄清楚这些乱七八糟的数据。

EN

回答 1

Stack Overflow用户

发布于 2019-05-31 07:02:43

这个问题不是很清楚,但是我假设匹配的是两个表中的名称,并且其中一个表中可能有不在另一个表中的名称:

DDL

代码语言:javascript
复制
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');

查询

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56385942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档