首页 > 数据库技术 > 详细

SQL9

时间:2020-02-09 11:14:00      阅读:58      评论:0      收藏:0      [点我收藏+]

 题目描述
统计各个部门的工资记录数,给出部门编码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 

SQL9

原文:https://www.cnblogs.com/fruit1024/p/12286228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!