mysql實現分組排序查詢

2021-10-08 10:08:54 字數 1320 閱讀 1225

需求:

針對於學生的考試成績需要按等級區分 考生,同時把各個等級的人員按照分數的高低排序     

如下圖姓名

成績等級

分數序號

趙晴優秀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...