如何使用 SQL 语句计算百分比?

如何使用 SQL 语句计算百分比?

我有两个 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

如果您的产品以整数算术计算此结果,而您希望以十进制获得结果,则请100100.0上面的方法替换。

相关内容