mysql分组并排序解决思路
mysql分组并排序
做一个统计。比如某学校的学生成绩。当我将年级分组后对每个班的总成绩排名次。将这个统计结果插入一个新表。求解分组后如何排名次。如:
初一 3班 465 1
初一 1班 455 2
初一 2班 444 3
初二 4班 524 1
初二 3班 475 2
初二 1班 455 3
初二 2班 444 4
没什么分,真心求教。
------解决方案--------------------
做一个统计。比如某学校的学生成绩。当我将年级分组后对每个班的总成绩排名次。将这个统计结果插入一个新表。求解分组后如何排名次。如:
初一 3班 465 1
初一 1班 455 2
初一 2班 444 3
初二 4班 524 1
初二 3班 475 2
初二 1班 455 3
初二 2班 444 4
没什么分,真心求教。
------解决方案--------------------
- SQL code
create table fan (年级 varchar(6),班级 varchar(6),总成绩 int) insert into fan select '初一', '3班', 465 union all select '初一', '1班', 455 union all select '初一', '2班', 444 union all select '初二', '4班', 524 union all select '初二', '3班', 475 union all select '初二', '1班', 455 union all select '初二', '2班', 444 select 年级,班级,总成绩, row_number() over(partition by 年级 order by 总成绩 desc) '名次' from fan order by 年级 desc /* 年级 班级 总成绩 名次 ------ ------ ----------- -------------------- 初一 3班 465 1 初一 1班 455 2 初一 2班 444 3 初二 4班 524 1 初二 3班 475 2 初二 1班 455 3 初二 2班 444 4 (7 row(s) affected) */