在SQL中两个SELECT语句的减法(redhift)。

0 人关注

谁能解释一下为什么下面的方法不起作用?

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

Count(*)会给我表格中的所有行,Count(Metric)会给我Metric列中的非空值。因此,这两者之间的差值将给我提供公制列中的空值数量,我将这一列标为X。

顺便说一下,我知道我可以通过下面的方法使它工作。

SELECT COUNT(*) as a, count(metric) as b, COUNT(*)-COUNT(metric) as c
    
sql
group-by
count
amazon-redshift
sql-null
bz_2020
bz_2020
发布于 2020-04-13
3 个回答
GMB
GMB
发布于 2020-04-13
0 人赞同

你需要将结果 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
    
Gordon Linoff
Gordon Linoff
发布于 2020-04-13
0 人赞同

SELECT 查询需要以 SELECT (或 WITH ,如果查询是一个带有集合运算符的复合查询,如 UNION ALL )开始。

一种方法是。

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

一个更好的方法是。

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