在 TSql 中,对包含空值的数据进行分组的推荐方法是什么?
查询类型示例:
Select Group, Count([Group])
From [Data]
Group by [Group]
Run Code Online (Sandbox Code Playgroud)
看来count(*) 和count(Group) 都会导致显示 的空组0。
预期表数据示例:
Id, Group
---------
1 , Alpha
2 , Null
3 , Beta
4 , Null
Run Code Online (Sandbox Code Playgroud)
预期结果示例:
Group, Count
---------
Alpha, 1
Beta, 1
Null, 0
Run Code Online (Sandbox Code Playgroud)
这是可以通过 count(Id) 获得的期望结果。这是获得此结果的最佳方法吗?为什么count(*) 和count(Group) 返回“不正确”的结果?
Group, Count
---------
Alpha, 1
Beta, 1
Null, 2
Run Code Online (Sandbox Code Playgroud)
编辑:我不记得为什么我认为 count(*) 这样做了,这可能是我正在寻找的答案..
最好的方法是使用 count(*),其行为与 count(1) 或任何其他常量完全相同。
* 将确保每一行都被计算在内。
Select Group, Count(*)
From [Data]
Group by [Group]
Run Code Online (Sandbox Code Playgroud)
null在这种情况下显示而不是 2 的原因0是因为每个单元格都被计为 1 或 null,null + null = null因此该组的总数也将为 null。但是,列类型是整数,因此它显示为0。