你的标题和叙述之间有两个问题。
DISTINCT 不会消除(排除)空值
然而
聚合函数忽略空值
正如其他人所提到的,如果您想计算所有非空 DISTINCT 值,请使用您提到的代码。
SELECT COUNT(DISTINCT columnName)
Run Code Online (Sandbox Code Playgroud)
如果您想将所有空值计算为另一个值,您可以使用 2 种方法中的一种。
1) 使用 COALESCE() 消除数据集中未表示的值的空值。例如
SELECT COUNT(DISTINCT COALESCE(columnName,'|||||||||'))
Run Code Online (Sandbox Code Playgroud)
2)更确定的方式使用类似于戈登展示的条件聚合:
显示如何 distinct 不会消除空值:
CREATE TABLE DistinctTest (Col INT)
INSERT INTO DistinctTest (Col) VALUES (NULL),(1),(2),(3),(NULL)
SELECT DISTINCT *
FROM
DistinctTest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5033 次 |
| 最近记录: |