我有两列像这样-id和val。我需要这样一个不同的id,每个id对应一个空值。按id使用“groupby”然后在有null的地方使用“having”子句是否合理?
bihw5rsg1#
获取有 NULL 我倾向于从以下几点开始:
NULL
select id from t group by id having count(*) <> count(val);
此结构允许您检查其他值,例如非- NULL 价值观。使用 NULL 值为:
select distinct id from t where val is null;
如果你只想数数:
select count(distinct id) from t where val is null;
fd3cxomn2#
我会用 NOT EXISTS :
NOT EXISTS
SELECT COUNT(DISTINCT id) FROM table t WHERE NOT EXISTS (SELECT 1 FROM table t1 WHERE t1.id = t.id AND t1.val IS NOT NULL);
其他选项使用 GROUP BY :
GROUP BY
SELECT COUNT(id) FROM table t GROUP BY id HAVING SUM(CASE WHEN val IS NOT NULL THEN 1 ELSE 0 END) = 0;
2条答案
按热度按时间bihw5rsg1#
获取有
NULL
我倾向于从以下几点开始:此结构允许您检查其他值,例如非-
NULL
价值观。使用
NULL
值为:如果你只想数数:
fd3cxomn2#
我会用
NOT EXISTS
:其他选项使用
GROUP BY
: