leetcode618.學生地理信息報告

一所美國大學有來自亞洲、歐洲和美洲的學生,他們的地理信息存放在如下 student 表中。

 

| name   | continent |
|--------|-----------|
| Jack   | America   |
| Pascal | Europe    |
| Xi     | Asia      |
| Jane   | America   |
 

寫一個查詢語句實現對大洲(continent)列的 透視表 操作,使得每個學生按照姓名的字母順序依次排列在對應的大洲下面。輸出的標題應依次爲美洲(America)、亞洲(Asia)和歐洲(Europe)。數據保證來自美洲的學生不少於來自亞洲或者歐洲的學生。

 

對於樣例輸入,它的對應輸出是:

 

| America | Asia | Europe |
|---------|------|--------|
| Jack    | Xi   | Pascal |
| Jane    |      |        |

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/students-report-by-geography
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

思路:

1.新增1列,給3個洲的學生分別按照姓名順序排名,使用row_number() over (order by ) 函數,這樣有3個表

2.將3個表按照排名列聯接起來

代碼

select America, Asia, Europe
from 
(select name as America,row_number() over (order by name ASC) as rn from student where continent='America') a
left join
(select name as Asia,row_number() over (order by name ASC) as rn from student where continent='Asia') b
on a.rn=b.rn
left join
(select name as Europe,row_number() over (order by name ASC) as rn from student where continent='Europe') c
on c.rn=a.rn

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章