Zac*_*ith 11 null sql-server aggregate
SELECT 语句返回几行:
SELECT
ColA
FROM
TableA
WHERE
ColA IS NULL
Run Code Online (Sandbox Code Playgroud)
我在 TableA 中得到 47 行的 ColA 为“NULL”。
ColA
NULL
NULL
NULL
etc...
Run Code Online (Sandbox Code Playgroud)
如果我向这个查询添加一个聚合:
SELECT
ColA,
COUNT(ColA) AS theCount
FROM
TableA
WHERE
ColA IS NULL
GROUP BY ColA
Run Code Online (Sandbox Code Playgroud)
我得到
ColA | theCount
NULL | 0
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该怎么做才能避免这种情况?
a_h*_*ame 30
聚合函数忽略空值。
所以
SELECT COUNT(cola) AS thecount
FROM tablea
Run Code Online (Sandbox Code Playgroud)
相当于
SELECT count(*) AS thecount
FROM tablea
WHERE cola IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
由于您的所有值都为空,count(cola)
因此必须返回零。
如果要计算空行,则需要 count(*)
SELECT cola,
count(*) AS theCount
FROM tablea
WHERE cola is null
GROUP BY cola;
Run Code Online (Sandbox Code Playgroud)
或者更简单:
SELECT count(*) AS theCount
FROM tablea
WHERE cola is null;
Run Code Online (Sandbox Code Playgroud)
如果要在单个查询中计算 NULL和NOT NULL 值,请使用:
SELECT count(cola) as not_null_count,
count(case when cola is null then 1 end) as null_count
FROM tablea;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62031 次 |
最近记录: |