问题描述:
2015-03-02 2015-03-05 10
2015-03-04 2015-03-06 20
输出描述:用户每天需要还的金额
2015-03-02 10
2015-03-03 10
2015-03-04 30
2015-03-05 30
2015-03-06 20
分析:根据题目描述的输入输出,很容易知道思路哈,就是想要把从开始时间到结束时间的每一条数据都拆开存储,然后根据日期去聚合就可以得到每天的欠费金额了,所以难点就在于如何根据一个起始时间来进行拆分呢?
代码:
select
date,
sum(amount) as total_amount
from (
select
date_add(start_date,id) as date, amount
from tmp
lateral view posexplode(split(space(datediff(end_date,start_date)),' ')) t as id,t_date
) t
group by date
;
~~ps:这是昨天字节一面的一个同学分享给我的一个SQL面试题目,希望大家多总结自己不会的题目!!!有面试中遇到的问题都可以记录下来分享给我,我会就一些比较经典的问题来进行解答然后分享出来~~
#你觉得今年春招回暖了吗##大数据开发面经##HQL##字节#