Mysql
按 MYSQL 8.x 分組的每組值的 SELECT 最大值排序
我需要獲取一組記錄的最大年齡,即使年齡是重複的 ORDER BY the age DESC
Person | Group | Age --- Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 Lalo |3 |50 Julia|3 |50 Travis|3 |18 Wanted results: Julia | 3 | 50 Shawn | 1 | 42 Laura | 2 | 39
我嘗試了這個解決方案,當應用到我的真實表時,我帶來了重複的年齡記錄,我無法通過“列”DESC 來訂購
我還嘗試在查詢結束時執行 GROUP BY Group 和 ORDER BY Age DESC,這使值分組正確,但 Age 值不正確
在 MySQL 8.0 上,一種解決方案是以這種方式使用ROW_NUMBER函式:
請注意,我使用
Grp
了而不是Group
,因為它是保留字。SELECT Person, Grp, Age FROM (SELECT Person, Grp, Age, ROW_NUMBER() OVER (PARTITION BY Grp ORDER BY Age DESC) Rn FROM Ppl) a WHERE Rn = 1 ORDER BY Age DESC;
人 | 組 | 年齡 :----- | --: | --: 啦啦啦 3 | 50 肖恩 | 1 | 42 勞拉 | 2 | 39
除非您在 ORDER BY 子句中添加另一列,否則無法獲得 Julia 而不是 Lalo。
db<>在這裡擺弄