SQL統計每科前三名的學生的語句

2022-07-21 02:33:08 字數 1784 閱讀 6118

偶然在論壇看到乙個網友的帖子,關於他遇到乙個面試題的,**寫了很多,我看了一下,結果應該是沒問題的,但是為何面試官還是不滿意,我想面試官可能並不是想考你真能把這道題做出來,而是看你如何簡潔的通過乙個sql語句就完成,重點我想是面試官想看到"row_number"  "partition"這樣的關鍵字吧

下面說下具體分析做法

有個成績表 stuscore(stuid,subject,score)分別為學號,課程名,成績。

問題:用語句查詢出每科的前三名學生的學號

1.建立測試sql語句

create

table stuscore(stuid int,subject nvarchar(10),score float

);insert

into stuscore values(1,'

語文',70

);insert

into stuscore values(1,'

數學',60

);insert

into stuscore values(1,'

英語',90

);insert

into stuscore values(2,'

語文',78

);insert

into stuscore values(2,'

數學',67

);insert

into stuscore values(2,'

英語',80

);insert

into stuscore values(3,'

語文',89

);insert

into stuscore values(3,'

數學',60

);insert

into stuscore values(3,'

英語',97

);insert

into stuscore values(4,'

語文',50

);insert

into stuscore values(4,'

數學',67

);insert

into stuscore values(4,'

英語',70

);insert

into stuscore values(5,'

語文',79

);insert

into stuscore values(5,'

數學',65

);insert

into stuscore values(5,'

英語',79

);insert

into stuscore values(6,'

語文',74

);insert

into stuscore values(6,'

數學',56

);insert

into stuscore values(6,'

英語',87);

2.查詢語句:

select

*from

(

select

*,row_number() over(partition by subject order

by score desc) rn from

stuscore

) t

where rn<

4

3.結果如下:

分科目統計每科前三名的學生

一張表tb student insert into tb student values 001 姜子牙 語文 80 insert into tb student values 001 姜子牙 數學 70 insert into tb student values 001 姜子牙 英語 90 inse...

36匹馬賽跑,選出前三名的次數

36匹馬賽跑,跑道同時只能容許6匹馬。而且36匹馬速度不同,但是每次跑的速度恆定。問跑多少次可以選出第一,第二,第三名?答 8次 來分析 第一步,我們將36匹馬分成6支隊伍,編號如下 a1,a2,a6 b1,b2,b6 c1,c2,c6 d1,d2,d6 e1,e2,e6 f1,f2,f6 每支隊伍...

Hive Sql 查詢最被喜歡的愛好的前三名

需求 查詢最被喜歡的愛好的前三名。需求解析 最被喜歡的愛好,就是看哪個愛好的人數最多 user hobbys表,資料如下 資料是製表符隔開的 name hobby john 男 打桌球,游泳,看電影 jack 男 打桌球,看電影 lucy 女 看書,購物 lili 女 游泳,看電影 create t...