SQL9

 题目描述
统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及次数sum

    CREATE TABLE `departments` (
    `dept_no` char(4) NOT NULL,
    `dept_name` varchar(40) NOT NULL,
    PRIMARY KEY (`dept_no`));
    CREATE TABLE `dept_emp` (
    `emp_no` int(11) NOT NULL,
    `dept_no` char(4) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`dept_no`));
    CREATE TABLE `salaries` (
    `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`));


解题思路:
首先题目要求统计各个部门的工资记录,自然联想到要用到group by 分组和count(salary)统计次数。
但是这些信息不在同一张表中,所以用到数据关联查询,以部门表为主体,关联表dept_emp和表salaries

故参考答案为:

    select ds.dept_no,ds.dept_name,count(s.salary)as sum from departments ds
    left join dept_emp dp on ds.dept_no=dp.dept_no 
    left join salaries s on dp.emp_no=s.emp_no
    group by ds.dept_no 

posted @ 2020-02-09 09:41  果实1024  阅读(90)  评论(0编辑  收藏  举报