leetcode数据库类型:1179.重新格式化部门表,难度:简单
解答:
这道题首先利用group by使得department表按照id进行分组,生成一张虚拟表。在这张虚拟表中,所有id=1的revenue的数据都写在了同一个单元格中,如当id=1时,8000、7000、6000都是写在同一个单元格内,这种虚拟表可以帮助我们理解group by的作用。其次,case when的原理是当一个单元格中有多个数据时,case when只会提取当中的第一个数据,以case when month='Feb' then revenue end为例,当id=1时,它只会提取当中的第一个数据,即Jan,它不等于Feb。所以找不到Feb对应的revenue,所以返回为null,那该如何解决单元格内含多个数据的情况呢?答案就是使用聚合函数,聚合函数就是用来输入多个数据,输出一个数据的,如sum或max,而每个聚合函数的输入就是每一个多数据的单元格,以sum(cae when month = 'Feb' then revenue end)为例,当id=1时,它提取的Jan、Feb、Mar,从中找到了附和条件的Feb,并最终返回对应的revenue。






网友评论