group by 和 max 的使用细节

group by 和 max()的使用
遇到了大坑啦,哎~~

数据表

在这里插入图片描述
sql 语句

SELECT ename,job,MAX(sal) FROM emp
GROUP BY job

执行结果

在这里插入图片描述
发现 max 最大的结果是正确的,但是其余的信息可能是错误的
怎么解决呢?
先按照业务逻辑内部排好序,在聚合默认取出第一行

SELECT ename,job,MAX(sal) max FROM (
SELECT * 
FROM emp 
ORDER BY sal DESC
) e
GROUP BY e.job
ORDER BY max desc

执行结果如下

在这里插入图片描述
总结:group by 分组后,再在每一个小组中进行筛选, 而max就仅仅是筛选小组中某一列的最大值,其余列默认是小组中的第一条记录

猜你喜欢

转载自blog.csdn.net/qq_42224683/article/details/109526985