文章目录
- 1. 题目
- 2. 解题
1. 题目
一所美国大学有来自亚洲、欧洲和美洲的学生,他们的地理信息存放在如下 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 给每个国家的学生编号
(select name, row_number() over(order by name) rnkfrom studentwhere 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) rnkfrom studentwhere continent='America'
) a
left join
(select name Asia, row_number() over(order by name) rnkfrom studentwhere continent='Asia'
) b
using(rnk)
left join
(select name Europe, row_number() over(order by name) rnkfrom studentwhere continent='Europe'
) c
using(rnk)
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!