分组查询最大/最小值sql

经典题目:查询每个班级的最高分,查询每种日志的最晚记录
1.查询每个班级的最高分(不考虑同一分数的)
这里写图片描述
SQL语句:
SELECT id,name,calssid,MAX(score) FROM
(SELECT * FROM t_zhb ORDER BY score desc) A
GROUP BY calssid;

select * from(select * from t_zhb order by score desc) a group by classid  该语句上上面语句效果一样,先把数据按照某字段排序,再查下分组。

查询结果:
这里写图片描述

必须要有子查询,子查询先要排序,如果取最大,倒序排,反之,正序排。

注意:如果要考虑多人同分的,则需要用自连接方式实现分组排序,具体见:
http://blog.csdn.net/okiwilldoit/article/details/50955012

同理,如果有一个张日志表t_log,表结构有id,logtime,type,content四个字段,想要获取每种类型日志的最晚记录.
SQL语句为:
SELECT id,type,content,MAX(logtime) FROM
(SELECT * FROM t_log ORDER BY logtime DESC) A
GROUP BY type;

猜你喜欢

转载自blog.csdn.net/zdw19861127/article/details/79809178
今日推荐