ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

一道一直没弄明白的sql 有关group

2021-03-05 20:35:34  阅读:178  来源: 互联网

标签:salary 01 group 没弄 no salaries dept emp sql


我的答案:

我的想法就是先把表按照emp_no给合并起来,然后对这个新表t进行筛选最大的工资并且按照部门分组。

select t.dept_no,t.emp_no,max(t.salary) as maxSalary from 
(select d.dept_no,d.emp_no,s.salary from dept_emp d
inner join salaries s on d.emp_no=s.emp_no
 where d.to_date='9999-01-01' and s.to_date='9999-01-01' ) t
 group by t.dept_no
 order by t.dept_no
 

 

可以通过的答案:

SELECT a.dept_no,b.emp_no,a.salary
FROM 
    (SELECT dept_no,MAX(salary) AS salary
    FROM salaries
    INNER JOIN dept_emp
    ON dept_emp.emp_no=salaries.emp_no
    WHERE dept_emp.to_date = '9999-01-01'
    AND salaries.to_date='9999-01-01'
    GROUP BY dept_no) AS a
INNER JOIN 
    (SELECT dept_no,dept_emp.emp_no,salary
    FROM dept_emp
    INNER JOIN salaries
    ON dept_emp.emp_no=salaries.emp_no
    WHERE dept_emp.to_date = '9999-01-01'
    AND salaries.to_date='9999-01-01')AS b
ON a.salary=b.salary
AND a.dept_no=b.dept_no
ORDER BY dept_no

然后主要原因是:mysql select中只能使用group中用过的字段

否则按我原来的做法maxsala和emp——no是不一定对应的!

 

标签:salary,01,group,没弄,no,salaries,dept,emp,sql
来源: https://www.cnblogs.com/liuxiangyan/p/14488329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有