GROUP BY 子句和空值
如果分组列包含一个空值,那么该行将成为结果中的一个组。如果分组列包含多个空值,那么这些空值将放入一个组中。此行为在 SQL-92 标准中定义。
titles 表中的 royalty 列包含一些空值,例如:
SELECT royalty, AVG(price * 2) AS AveragePrice FROM pubs.dbo.titles GROUP BY royalty
下面是结果集:
royalty AveragePrice ----------- -------------------------- (null) (null) 10 32.89 12 30.94 14 23.90 16 45.90 24 5.98 (6 row(s) affected)
下面的 SELECT 语句通过添加一个 WHERE 子句,可以更改为删除空值:
SELECT royalty, AVG(price * 2) AS AveragePrice FROM pubs.dbo.titles WHERE royalty IS NOT NULL GROUP BY royalty