【发布时间】:2017-11-28 00:04:17
【问题描述】:
我想比较两个表格作为数据质量报告的一部分。结果应该是三个列,汇总了表 table_a 和 table_b 中的 column_x 列:
- table_a 中非空白的 column_x 值的百分比
- table_a 中不同值的计数
- table_a 中不存在于 table_b 中的不同值的计数
第 1 列和第 2 列很容易设置:
select
sum(CASE WHEN column_x = '' THEN 0 ELSE 1 END) / count(*) AS percent_complete_in_a, -- column 1
count(DISTINCT column_x) AS distinct_values_A -- column 2
from table_A
但我不知道如何编写查询,以便第 3 列可以出现在相同的结果中。我尝试了以下几种变体,但每种变体都会在 Postgres 中引发语法错误:
select
sum(CASE WHEN column_x = '' THEN 0 ELSE 1 END) / count(column_x) AS percent_complete_in_a, -- column 1
count(DISTINCT column_x) AS distinct_values_A, -- column 2
count(DISTINCT column_x where column_x not in (select DISTINCT column_x FROM table_b)) as distinct_values_A_except_B -- column 3
from table_a
有没有办法构造这个查询以使其显示所有三列?
【问题讨论】:
标签: sql postgresql count