每日一题-11(重新格式化部门表)

题11:

编写一个SQL查询来重新格式化表,使得新的表中有一个部门id列和一些对应每个月的收入(revenue)列。
在这里插入图片描述
解题思路:
(1)group by id 会使department表按照id分组,所有id=1的revenue或者month数据都写在了同一个单元格中,如8000、7000、6000都是写在同一单元格内的。注:这种写法只存在于虚拟表中,帮助我们理解,真正的表是不能这样写的。
(2)case a when b else c end 的句式:case when只会提取当中的第一个数据。当单元格含多个数据的情况,需要使用聚合函数,如sum()或max(),而每个聚合函数的输入就是每一个多数据的单元格。

代码如下:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值