SQL今日一题(18):3表连接
16lz
2021-01-22
题目描述
统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum
这题用到salaries表、dept_emp表和departments表
salaries表
dept_emp表
departments表
方法
select dp.dept_no,dp.dept_name,count(s.salary) as sum
from dept_emp de,departments dp,salaries s
where de.dept_no = dp.dept_no
and de.emp_no = s.emp_no
group by dp.dept_no,dp.dept_name
1、用where将3个表连接在一起,dept_emp表和departments表用dept_no连接,dept_emp表和salaries表用emp_no连接
2、题目中说在salaries表里面有多少条记录sum,虽然有sum出现,但用的是count计数,只是将这个字段命名为sum,这一点需要注意。同时因为使用了count聚合函数,要用group by进行分组。
3、where连接的效果和inner join是一样的。
select dp.dept_no,dp.dept_name,count(s.salary) as sum
from dept_emp de
inner join departments dp on de.dept_no = dp.dept_no
inner join salaries s on de.emp_no = s.emp_no
group by dp.dept_no,dp.dept_name
结果都是如下图所示
结果
知识点
3表连接
where连接,确定好公共字段
子查询先连两个再和第三个连