需求:
針對於學生的考試成績需要按等級區分 考生,同時把各個等級的人員按照分數的高低排序
如下圖姓名
成績等級
分數序號
趙晴優秀991
李四優秀952
王五良好891
趙六良好872
李天良好853
王小普通781
李思普通752
建立學生成績表 student
姓名name
成績等級
level
分數score
建立資料如下
趙晴優秀
99李四
優秀95
王五良好
89趙六
良好87
李天良好
85王小
普通78
李思普通
75語句實現如下:
select
a1.`name`,
a1.`level`,
a1.score,
(a1.order_no - a2.order_start + 1
) row_no
from
(select
a.`name`,
a.`level`,
a.score,
(@i :=@i + 1) order_no
from
student a,
(select @i := 0) as s
order by
field(
a.`level`,
'優秀',
'良好',
'普通'
),a.score desc
) a1
inner join (
select
t.`level`,
min(order_no1) order_start
from
(select
a.`name`,
a.`level`,
a.score,
(@j :=@j + 1) order_no1
from
student a,
(select @j := 0) as s
order by
field(
a.`level`,
'優秀',
'良好',
'普通'
),a.score desc
) tgroup by
`level`
) a2 on (a1.`level` = a2.`level`)
此類語句適合做統計,對應實時要求很強的大量資料不建議用該語句
Mysql實現分組排序
資料 studenno studentname classno classname 2018140101 張三1401 14級一班 2018140111 孫一1402 14級二班 2018140121 李二1402 14級二班 2018140102 錢一1401 14級一班 2018140104 趙...
MySQL模糊查詢,排序,分組
模糊查詢時 欄位名 like 乙個或者多個字元,可能有可能沒有 任意乙個字元 select from 表名 where name like 昭 查詢 查詢 中名字含有昭的所有資訊 對查詢到的內容進行排序 select from 表名 order by salary 預設公升序 select from...
mysql排序 分組 多表查詢
1.mysql排序 1.1.從大到小排序,不加desc預設情況下是公升序 mariadb fei1 select from student order by age desc id name age 7 lisi 50 4 sean 28 5 zhangshan 26 3 wangqing 25 2...