0

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

((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
4

3 回答 3

1

您将需要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
于 2020-04-13T14:22:18.127 回答
0

查询需要SELECTSELECT(或WITH括号开头,如果查询是带有集合运算符的复合查询,例如UNION ALL)。

一种方法是:

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

更好的方法是:

SELECT COUNT(*) - Count(Metric) as X
FROM Table1
于 2020-04-13T14:21:19.233 回答
0

不确定 amazon-redshift,但在标准 SQL 中,我只会计算字段为空的记录,而不是计算所有不为空的减号。

SELECT COUNT(*) FROM Table1 WHERE Metric IS NULL;
于 2020-04-13T14:30:13.383 回答