LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)

题目要求

LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)

1. 按照’月份‘排序

select *,row_number() over (partition by continent order by name) rn from students;

LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)

2.行列转换,找出符合条件的一个人

select  
min(
case when continent = '一月' then name else  end)  as 一月,
min(
case when continent = '二月' then name else null end)  as 二月,
min(
case when continent = '三月' then name else null end)  as 三月,
min(
case when continent = '四月' then name else null end)  as 四月
from students;

LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)

3. 汇总集合

select  
min(
case when continent = '一月' then name else null end)  as 一月,
min(
case when continent = '二月' then name else null end)  as 二月,
min(
case when continent = '三月' then name else null end)  as 三月,
min(
case when continent = '四月' then name else null end)  as 四月
from (
select *,row_number() over (partition by continent order by name) rn from students
) b
group by rn;

LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)

上一篇:sql的case when的使用


下一篇:列数据转换成行表头