首页 > 解决方案 > SQL 中两个 SELECT 语句的减法(redshift)

问题描述

有人可以解释为什么以下不起作用吗?

((SELECT COUNT(*) FROM Table1) - (SELECT Count(Metric) FROM Table1)) as X

Count(*) 将为我提供表中的所有行,而 Count(Metric) 将为我提供 Metric 列中的非空值。因此,它们之间的差异将为我提供度量列中空值的数量,并且我已将此列标记为 X。我只想要列 X 中两者之间的差异,但不确定为什么它不起作用。

顺便说一句,我知道我可以通过以下方式让它工作:

SELECT COUNT(*) as a, count(metric) as b, COUNT(*)-COUNT(metric) as c

标签: sqlgroup-bycountamazon-redshiftsql-null

解决方案


您将需要select结果:

SELECT ((SELECT COUNT(*) FROM Table1) - (SELECT Count(Metric) FROM Table1)) as X

但是使用条件聚合更简单:

SELECT SUM(CASE WHEN Metrics IS NULL THEN 1 ELSE 0 END) X FROM table1

推荐阅读