--用group by all select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by all dept
GROUP BY 子句和 ALL 关键字 Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字。只有在 SELECT 语句还包括 WHERE 子句时,ALL 关键字才有意义。如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。下面是一些示例:USE pubs SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY type下面是结果集:type ------------ -------------------------- business 17.31 popular_comp 20.00 psychology 14.14 trad_cook 17.97 (4 row(s) affected)USE pubs SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY ALL type下面是结果集:type ------------ -------------------------- business 17.31 mod_cook (null) popular_comp 20.00 psychology 14.14 trad_cook 17.97 UNDECIDED (null) (6 row(s) affected)第一个查询只为取得 %10 版税的那些书籍产生组。由于没有含 10% 版税的现代烹调书籍,因此结果中没有 mod_cook 类型的组。第二个查询为所有类型均生成组,包括现代烹调书籍和 UNDECIDED,即使现代烹调书籍组不包含任何符合 WHERE 子句中指定的条件的行。对于没有符合条件的行的组,容纳聚合值的列(平均价格)为 NULL。
select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by dept
select dept, count(*) as maleCount from table_employee where sex = 'male' group by all dept
select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by all dept
Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字。只有在 SELECT 语句还包括 WHERE 子句时,ALL 关键字才有意义。如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。下面是一些示例:USE pubs
SELECT type, AVG(price)
FROM titles
WHERE royalty = 10
GROUP BY type下面是结果集:type
------------ --------------------------
business 17.31
popular_comp 20.00
psychology 14.14
trad_cook 17.97 (4 row(s) affected)USE pubs
SELECT type, AVG(price)
FROM titles
WHERE royalty = 10
GROUP BY ALL type下面是结果集:type
------------ --------------------------
business 17.31
mod_cook (null)
popular_comp 20.00
psychology 14.14
trad_cook 17.97
UNDECIDED (null) (6 row(s) affected)第一个查询只为取得 %10 版税的那些书籍产生组。由于没有含 10% 版税的现代烹调书籍,因此结果中没有 mod_cook 类型的组。第二个查询为所有类型均生成组,包括现代烹调书籍和 UNDECIDED,即使现代烹调书籍组不包含任何符合 WHERE 子句中指定的条件的行。对于没有符合条件的行的组,容纳聚合值的列(平均价格)为 NULL。
我顶