一所美国大学有来自亚洲、欧洲和美洲的学生,他们的地理信息存放在如下 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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
(
select name, row_number() over(order by name) rnk
from student
where continent='America'
)
{"headers": ["name", "rnk"], "values": [["Jack", 1], ["Jane", 2]]}
# Write your MySQL query statement below
select America, Asia, Europe
from
(
select name America, row_number() over(order by name) rnk
from student
where continent='America'
) a
left join
(
select name Asia, row_number() over(order by name) rnk
from student
where continent='Asia'
) b
using(rnk)
left join
(
select name Europe, row_number() over(order by name) rnk
from student
where continent='Europe'
) c
using(rnk)