偶然在論壇看到乙個網友的帖子,關於他遇到乙個面試題的,**寫了很多,我看了一下,結果應該是沒問題的,但是為何面試官還是不滿意,我想面試官可能並不是想考你真能把這道題做出來,而是看你如何簡潔的通過乙個sql語句就完成,重點我想是面試官想看到"row_number" "partition"這樣的關鍵字吧
下面說下具體分析做法
有個成績表 stuscore(stuid,subject,score)分別為學號,課程名,成績。
問題:用語句查詢出每科的前三名學生的學號
1.建立測試sql語句
create2.查詢語句: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);
select3.結果如下:*from
(
select
*,row_number() over(partition by subject order
by score desc) rn from
stuscore
) t
where rn<
4
分科目統計每科前三名的學生
一張表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...