26.【较难】汇总各个部门当前员工的title类型的分配数目

汇总各个部门当前员工的title类型的分配数目

http://www.nowcoder.com/questionTerminal/4bcb6a7d3e39423291d2f7bdbbff87f8

先上正确代码

select d.dept_no,
       d.dept_name,
       t.title,
       count(t.title)as count
from departments d,dept_emp de,titles t
where de.emp_no=t.emp_no
and de.dept_no=d.dept_no
and de.to_date='9999-01-01'
and t.to_date='9999-01-01'
group by d.dept_no,t.title

下面是我一开始写的,很典型的易错点

select d.dept_no,
       d.dept_name,
       t.title,
       count(t.title)as count
from departments d,dept_emp de,titles t
where de.emp_no=t.emp_no
and de.dept_no=d.dept_no
and de.to_date='9999-01-01'
and t.to_date='9999-01-01'
group by d.dept_no -- 只按照部门分组,不符合题意的;同理只按title分组也不行
数据分析阿宇君的SQL题解 文章被收录于专栏

数据分析的SQL题目

全部评论
跑不通
1 回复
分享
发布于 2020-12-03 22:12
你这个不对啊= =
1 回复
分享
发布于 2021-01-19 16:17
联易融
校招火热招聘中
官网直投
是count(d.emp_no)吧
1 回复
分享
发布于 2021-07-06 10:11
1.应该加上order by d.dept_no 2.d.dept_name不在group by聚合函数里面,怎么能用select呢,应该用max(d.dept_name)或者在group by 中添加d.dept_name,虽然牛客网能编译过,但是实际上是错误的吧!
9 回复
分享
发布于 2021-03-31 03:38
需要加上 order by d.dept_no;
8 回复
分享
发布于 2021-02-04 09:40
还需要对部门名称进行分组,group by d.dept_no,d.dept_name,t.title
7 回复
分享
发布于 2021-02-19 15:54
楼主的最后没有order by d.dept_no
3 回复
分享
发布于 2021-02-28 21:00
有group by的时候不是要求select 后面只能加分组函数和group by 后面的字段吗
1 回复
分享
发布于 2021-07-23 10:52
你这个没有order by
1 回复
分享
发布于 2022-02-18 10:44
请问我这样为什么不对呢? select g1.dept_no,g1.dept_name,g1.title,count(g1.title)as count from (select de2.emp_no,de2.dept_no,tt.title from dept_emp as de2 join titles as tt on de2.emp_no=tt.emp_no where de2.to_date=tt.to_date='9999-01-01') as g1 join (select de1.dept_no,de1.dept_name,de2.emp_no from departments as de1 join dept_emp as de2 on de1.dept_no=de2.dept_no where de2.to_date='9999-01-01') as g2 on g1.emp_no=g2.emp_no group by g1.dept_no,g1.title
点赞 回复
分享
发布于 2020-09-28 12:12
过不了
点赞 回复
分享
发布于 2020-12-28 15:03
select dm.dept_no,dm.dept_name,t.title,count(t.title) count from dept_emp de join titles t on t.emp_no = de.emp_no and t.to_date = '9999-01-01' join departments dm on de.dept_no = dm.dept_no and de.to_date = '9999-01-01' group by dm.dept_no,t.title order by dm.dept_no;
点赞 回复
分享
发布于 2021-01-05 09:47
为什么需要加上title分组才行?
点赞 回复
分享
发布于 2021-01-18 19:55
select dm.dept_no,dm.dept_name,t.title,count(t.title) count from departments dm,dept_emp de,titles t where dm.dept_no = de.dept_no and de.emp_no = t.emp_no group by t.title,dm.dept_no,dm.dept_name order by dm.dept_no
点赞 回复
分享
发布于 2021-03-16 16:37
就没要求分组
点赞 回复
分享
发布于 2021-04-14 14:00
在my sql里面跑不通,sqllite里可以
点赞 回复
分享
发布于 2021-06-20 18:29
也可以加和group by后面字段一一对应的字段
点赞 回复
分享
发布于 2021-08-22 15:36
这种连接方式挺新奇的,居然能过
点赞 回复
分享
发布于 2021-09-16 16:12
GROUP BY de.dept_no,t.title我看评论有要对dept_name进行分组的,但是一个部门只会有一个名称啊,即department里面只存在一个啊,实际上对dept_name分组对但没必要,也不会错吧,求解答一下
点赞 回复
分享
发布于 2021-09-17 11:11
少了一句排序 order by d.dept_no
点赞 回复
分享
发布于 2021-09-20 20:25

相关推荐

头像
点赞 评论 收藏
转发
57 收藏 评论
分享
牛客网
牛客企业服务