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

2021-09-06 14:45:31 字數 1536 閱讀 1281

一張表tb_student

insert into [tb_student] values('001','姜子牙','語文',80);

insert into [tb_student] values('001',姜子牙','數學',70);

insert into [tb_student] values('001','姜子牙','英語',90);

insert into [tb_student] values('002','娜吒','語文',88);

insert into [tb_student] values('002','娜吒','數學',77);

insert into [tb_student] values('002','娜吒','英語',85);

insert into [tb_student] values('003','雷震子','語文',99);

insert into [tb_student] values('003','雷震子','數學',67);

insert into [tb_student] values('003','雷震子','英語',94);

生成結果

id    sname    subject    grade    student_no                    row

5 旺旺 數學 90

0021

2 章三 數學 80

0012

11 娜吒 數學 67

0043

6 旺旺 英語 100

0021

15 雷震子 英語 97

0052

3 章三 英語 90

0013

13 雷震子 語文 89

0051

4 旺旺 語文 80

0022

10 娜吒 語文 78

0043

--sql server sql語句

with tableorder as(

select t.*,row_number() over(partition by t.[subject] order by t.grade desc) row from [tb_student] t)

select * from tableorder where row<=3;

--oracle sql

select * from (

select t.*,row_number() over(partition by t.[subject] order by t.grade desc) rownum from [tb_student] t) where rownum<=3;

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

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

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...