急问:高手请进

datapub 2003-10-18 10:54:51
有这样一个查询:
select dept, count(*) as maleCount from table_employee where sex = 'male' group by dept

其中dept表示部门 table_employee表示员工表

问题是:当某个部门(假设为妇产科)没有男员工时,上面的查询返回的结果为空,我希望能返回这样一条记录(部门 = 妇产科,男员工数= 0 )
该如何做呢?
...全文
27 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
welyngj 2003-10-18
  • 打赏
  • 举报
回复
sdhdy(大江东去...) 强!
我顶
sdhdy 2003-10-18
  • 打赏
  • 举报
回复
select dept, count(*) as maleCount from table_employee where sex = 'male' group by all dept
welyngj 2003-10-18
  • 打赏
  • 举报
回复
select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by dept
sdhdy 2003-10-18
  • 打赏
  • 举报
回复
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。

sdhdy 2003-10-18
  • 打赏
  • 举报
回复
--用group by all
select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by all dept
sdhdy 2003-10-18
  • 打赏
  • 举报
回复
select dept, isnull(count(*),0) as maleCount from table_employee where sex = 'male' group by dept
gmlxf 2003-10-18
  • 打赏
  • 举报
回复
group by all
datapub 2003-10-18
  • 打赏
  • 举报
回复
揭帖,大家学习!
datapub 2003-10-18
  • 打赏
  • 举报
回复
Faint
厉害

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧