mysql的分類排名 MySQL分類排名問題

2021-10-18 11:44:32 字數 1336 閱讀 3123

實現對學生按課程依成績高低進行排序

建表:create table `test` (

`id` int(11) not null auto_increment,

`name` varchar(20) default null,

`course` varchar(20) default null,

`score` int(11) default null,

primary key (`id`)

) engine=innodb auto_increment=10 default charset=utf8;

資料:1 張三 語文 80

2 李四 語文 90

3 王五 語文 93

4 張三 數學 77

5 李四 數學 68

6 王五 數學 99

7 張三 英語 90

8 李四 英語 50

9 王五 英語 89

子查詢select

select

count(b.score) + 1

from

test b

where

a. name = b. name

and a.score < b.score

) as 'rank'

from

test a

order by

name,

rank

查詢結果:

7 張三 英語 90 1

1 張三 語文 80 2

4 張三 數學 77 3

2 李四 語文 90 1

5 李四 數學 68 2

8 李四 英語 50 3

6 王五 數學 99 1

3 王五 語文 93 2

9 王五 英語 89 3

自連線select

a.*, count(b.score)+1 as 'rank'

from

test a left join test b on (a.name = b.name and a.score < b.score)

group by

a.name, a.score,a.course

order by

a.name, count(b.score) asc

查詢結果:

7 張三 英語 90 1

1 張三 語文 80 2

4 張三 數學 77 3

2 李四 語文 90 1

5 李四 數學 68 2

8 李四 英語 50 3

6 王五 數學 99 1

3 王五 語文 93 2

9 王五 英語 89 3

mysql分組排名 mysql分組排名

1.建立表並寫入測試資料 create table tb rank score city varchar 20 score int insert into tb rank score values sz 89 insert into tb rank score values sz 76 insert...

mysql 排名 MySQL用變數實現排名

mysql 8.0版本用視窗函式就可以實現排名,有三種方式,對相同值的處理不同 以上區別會在文末舉例,本文主要討論用變數實現排名 5.5版本用不了視窗函式 至少排序視窗用不了,其他的沒試過 那麼對於要顯示排名的需求就得想其他辦法啦,看網上的資料可以用變數來實現,來看看 首先建表並插入資料 資料資料來...

mysql儲存函式查詢排名 MySQL排名函式

應用場景 編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.00 4 3.85 5 4.00 6 3.65 例如,根據上述...