首页 > 试题广场 >

有三张表,分别是departments部门表(注:dept_

[单选题]
有三张表,分别是departments部门表(注:dept_no是主键):

dept_emp部门-员工表:


以及salaries工资表:


现在统计各个部门的工资条数,按照dept_no、dept_name、sum(工资条数)输出,并按dept_no升序排列会得到如下结果:


所以下列MySQL语句正确的是:


  • SELECT d.dept_no,d.dept_name,COUNT(salary) sum FROM departments d,dept_emp e,salaries s WHERE d.dept_no=e.dept_no AND e.emp_no=s.emp_no GROUP BY d.dept_no;

  • SELECT d.dept_no, d.dept_name, COUNT(s.salary) AS sum FROM salaries s JOIN dept_emp e ON s.emp_no = e.emp_no JOIN departments d ON d.dept_no = e.dept_no GROUP BY d.dept_no,d.dept_name ORDER BY d.dept_no;

  • SELECT d.dept_no, d.dept_name, SUM(s.salary) AS sum FROM salaries s JOIN dept_emp e ON s.emp_no = e.emp_no JOIN departments d ON d.dept_no = e.dept_no GROUP BY d.dept_no ORDER BY d.dept_no;

  • SELECT d.dept_no, d.dept_name, COUNT(s.salary) AS sum FROM salaries s JOIN dept_emp e ON s.emp_no = e.emp_no JOIN departments d ON d.dept_no = e.dept_no GROUP BY d.dept_no;

AD都没排序,C sum得出工资总金额,非工资条数
发表于 2022-03-15 11:09:52 回复(0)
sum统计的是工资的条数,所以主表为工资表,按照部门排序之前,要按照部门排序
发表于 2022-05-02 11:44:31 回复(1)
A为啥不对呢
发表于 2022-02-19 20:15:08 回复(3)
select a.dept_no dept_no,a.dept_name dept_name,count(*) sum from (select de.dept_no,de.dept_name,t.emp_no
             from departments de
                      inner join
                  (select s.emp_no, d.dept_no
                   from dept_emp d
                            inner join salaries s on d.emp_no = s.emp_no
                 ) t on de.dept_no = t.dept_no) a group by a.dept_no

编辑于 2023-07-08 22:10:32 回复(1)
看错了直接选的c
发表于 2022-06-05 17:16:05 回复(0)
排序默认不是降序吗
编辑于 2024-03-20 08:28:13 回复(2)
不排序不行吗

发表于 2023-05-14 23:43:58 回复(1)
这个题按说都有问题  group by分类后select后面只能跟groupby后的字段和聚合函数之类的 不应该能直接查询deptname这个字段啊
发表于 2022-03-22 10:10:59 回复(0)
A并没有排序,直接排除
发表于 2022-02-24 11:09:40 回复(0)