id
group
sort11
1212
3224
2151
3表sort_group如上圖所示,要求:選取每組中最大值。
方法1:
select a.group, substr(group_concat(sort order by sort desc) from 1 for 1) maxsort
from sort_group a
group by `group`;
方法2:
select *
from sort_group a
left join sort_group b on b.`group` = a.`group` and a.sort < b.sort
where b.sort is null;
這種實現利用了左連線,原理將表根據分組字段進行自連線,然後根據a.sort < b.sort過濾連線,那麼連線好的記錄中,右表為空時,左表中的a.sort肯定是最大的,這樣最後便得到了需求的記錄。
參考:
mysql分組排序
sql的分組排序是乙個難點,在leetcode中是乙個hard級別的題目。筆者這兩天在工作中遇到了這麼乙個需求。取過去一段時間範圍內銷量前500的商品,然後取每個商品裡面銷量最高的sku,一共500個sku。取銷量前500的商品好求,但是這500對應的最高的sku不太容易,需要用到分組排序。筆者在工...
MySQL分組排序
emp資料表建表語句 create table emp empno int,ename varchar 40 job varchar 40 mgr int,hiredate varchar 40 sal double,comm int,deptno int 插入資料準備 insert into em...
Mysql實現分組排序
資料 studenno studentname classno classname 2018140101 張三1401 14級一班 2018140111 孫一1402 14級二班 2018140121 李二1402 14級二班 2018140102 錢一1401 14級一班 2018140104 趙...