SQL-每日一题【1179. 重新格式化部门表】

题目

部门表 Department

SQL-每日一题【1179. 重新格式化部门表】_第1张图片

编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列。

查询结果格式如下面的示例所示:

SQL-每日一题【1179. 重新格式化部门表】_第2张图片

 

 

解题思路

1.题目要求我们重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列,这道题的思路比较简单,就是有点繁琐。

2.首先我们需要按照 id 将记录分组,然后用 case()函数去判断id 所对应的 month 是否存在,若存在我们就直接返回 month 所对应的 revenue ,若不存在,我们就返回null。判断完十二个月后返回即可。

代码实现

select id
    , sum(case `month` when 'Jan' then revenue else null end) as Jan_Revenue
    , sum(case `month` when 'Feb' then revenue else null end) as Feb_Revenue
    , sum(case `month` when 'Mar' then revenue else null end) as Mar_Revenue
    , sum(case `month` when 'Apr' then revenue else null end) as Apr_Revenue
    , sum(case `month` when 'May' then revenue else null end) as May_Revenue
    , sum(case `month` when 'Jun' then revenue else null end) as Jun_Revenue
    , sum(case `month` when 'Jul' then revenue else null end) as Jul_Revenue
    , sum(case `month` when 'Aug' then revenue else null end) as Aug_Revenue
    , sum(case `month` when 'Sep' then revenue else null end) as Sep_Revenue
    , sum(case `month` when 'Oct' then revenue else null end) as Oct_Revenue
    , sum(case `month` when 'Nov' then revenue else null end) as Nov_Revenue
    , sum(case `month` when 'Dec' then revenue else null end) as Dec_Revenue
from Department group by id

 

测试结果

SQL-每日一题【1179. 重新格式化部门表】_第3张图片

你可能感兴趣的:(SQL每日一题,sql,数据库)