我有两个 sql 表,我想比较这两个表。现在比较两个表已经完成,我想要的是按百分比形式匹配和不匹配的记录数。是否可以用 sql 编写查询来获取百分比?这是我的表格
src_table
----------------------------------------------------------------
src_table
----------------------------------------------------------------
1
2
3
a
b
c
a@
b@
c@
-----------------------------------------------------------------
并且 tgt_table 是
-----------------------------------------------------------------
tgt_data
-----------------------------------------------------------------
1
4
5
a
e
f
a@
e@
f@
--------------------------------------------------------------------
现在我想要以百分比的形式匹配的数据和不匹配的数据,可以吗?
答案1
我假设您希望计算表格中的百分比tgt_data
。如果不是这样,只需交换下面的表格名称即可。
查询取决于您的 SQL 产品的功能。如果它无法处理带有子查询的复杂表达式,则需要将表达式拆分为多个语句。
您想要计算的表达式是:
(select count(*) * 100 from tgt_data t where exists
(select * from src_table where src_col = t.tgt_col))
/
(select count(*) from tgt_data)
如果需要将其表述为一个 SELECT 语句,则可以使用以下替代表述:
select
(select count(*) * 100 from tgt_data t where exists
(select * from src_table where src_col = t.tgt_col))
/ count(*)
from tgt_data
如果您的产品以整数算术计算此结果,而您希望以十进制获得结果,则请100
用100.0
上面的方法替换。