谁能用sql完成下面3个表的查寻的

来源:百度知道 编辑:UC知道 时间:2024/05/30 02:57:35
1). 设有以下三个表:
表名:人事 t1
姓名a1 性别a2 籍贯编号a3 部门编号a4
张三 女 1 A
李四 男 2 B


表名:籍贯对照 t2

籍贯编号b1 籍贯b2
1 湖北
2 湖南
3 上海

表名:部门对照,t3
部门编号c1 部门名称c2
A 人事部
B 财务部
要求写出得出如下结果的sql语句的写法:
部门名称 籍贯 总人数 男 女
人事部 湖南 10 7 3
人事部 湖北 8 5 3
财务部 湖南 9 6 3
财务部 上海 12 10 2

SELECT t3.c2 as 部门名称,t2.b2 as 籍贯,Count(*) as 总人数,sum(case when t1.a2='男' then 1 else 0 end) as 男,sum(case when t1.a2='女' then 1 else 0 end) as 女
FROM t1 INNER JOIN
t2 ON t1.a3 = t2.b1 INNER JOIN
t3 ON t1.a4 = t3.c1
group by t2.b2,t3.c2
order by t3.c2

不知道,等知道的人回答

SELECT

B.部门名称,
D.籍贯,
COUNT(P.姓名)AS 人数,
SUM(CASE WHEN P.SEX='男' THEN 1 ELSE 0 END)AS 男,
SUM(CASE WHEN P.SEX='女' THEN 1 ELSE 0 END)AS 女

FROM

人事 AS P
INNER JOIN 籍贯对照 AS D
ON P.籍贯编号 = D.籍贯编号
INNER JOIN 部门对照 AS B
ON B.部门编号 = P.部门编号

GROUP BY D.籍贯,B.部门名称