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

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

https://www.nowcoder.com/practice/4bcb6a7d3e39423291d2f7bdbbff87f8

方法一:
select
B.dept_no,
B.dept_name,
B.title,
count(B.title)
from 
(select
A.dept_no,
A.dept_name,
title
from 
(select
de.emp_no,
de.dept_no,
d.dept_name
from dept_emp de
join departments d
on de.dept_no=d.dept_no
where de.to_date='9999-01-01') A
join titles t
on A.emp_no=t.emp_no
where t.to_date='9999-01-01') B
group by B.dept_no,B.title
order by B.dept_no,B.title

本题有3个知识点:
1.group byB.dept_no,B.title进行分组聚合,后面用order by排序;(题目要求“汇总各个部门当前员工的title类型的分配数目”,别忘了对title分组聚合,因为一个部门的员工title可能有重复
2.至于聚合函数count(B.title)直接放select后面就行;(注意group by后加having count(B.title)=XXX这种情况是聚合分组后的条件筛选,别弄混了)
3.本题考察三层表连接,逐个嵌套,注意4点:选好select输出的字段名、区分清楚别名、选准连接键、筛选当前在职员工to_date='9999-01-01';

方法二:
select
d.dept_no,
d.dept_name,
t.title,
count(t.title)
from departments d
join dept_emp de
on d.dept_no=de.dept_no
and de.to_date='9999-01-01'
join titles t
on de.emp_no=t.emp_no
and t.to_date='9999-01-01'
group by de.dept_no,t.title
order by de.dept_no,t.title

注意:
1.from...join...on...  on后面可以直接用and来筛选,作用等同于where,当然也可以换成where筛选;
2.这种方式方便快捷,直接from...join...join...连续表连接,无需多层子查询嵌套

全部评论

相关推荐

10-23 21:54
中南大学 Java
点赞 评论 收藏
分享
迷茫的大四🐶:摊牌了,我是25届的,你们也不招我
点赞 评论 收藏
分享
头像
昨天 20:19
已编辑
门头沟学院 人工智能
本文略长,献给身处双非、学院本科的低年级依旧陷入迷茫的同学,一个参考。夹杂强烈主观因素,若观点不同,仅当笑料。近日,工作之余的午休时间给母校的学弟学妹进行了宣讲,同时也接受了牛客的访谈,不约而同的触发了两个关键词考研,就业。现象今年和去年,认识的学弟学妹,来自知某、抖某、牛客等系列的学弟学妹,这次宣讲,约有20个学弟学妹来加了我的联系方式,向我取经,聊聊未来,聊聊想法。我这里简单概括一下。1.现在很迷茫,大方向摇摆就业还是考研,但是倾向考研。小方向摇摆竞赛和项目,不知道怎么去做,不知道怎么开始。2.考研的直接目的绝大多数都是为了(混)学历,根本目的就是提高就业竞争力。3.我把他们都拉了个群,在...
牛客85294058...:“私聊能够滔滔不绝,而拉了一个小群之后就完全一声不吭”个人观点这跟从小到大“不要浪费大家时间”的社会环境有关:个人化的提问,如果你上学时有留心、或者参加QA环节多,会注意到这种做法经常是被人骂的。要营造让大家开口的氛围和做出欢迎讨论的议题设置还是比较难的,期待方法探索。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务