有一份交易表sales,表的结构如下:
字段 | 字段名称 | 示例 |
user_id | 客户号(用户唯一标识) | 123 |
phone | 手机号码 | 13900000000 |
add_day | 日期 | 2020-01-01 |
amount | 销售额(元) | 100 |
请根据以上信息
(1)请计算2020年1月每天累计销售额。如:1月1日销售额为10万,1月2日销售额为50万,则1月1日累计销售额10万,1月2日累计销售额60万。
(2)提供2020年1月中连续购买7天及以上的用户清单。
-- 1
select add_day,sum(amount) over(partition by add_day )
from sales
where add_day between '2020-01-01' and '2020-01-31'
group by add_day
order by add_day asc
参考:hive窗口函数sum
Hive窗口函数之SUM、AVG、MIN和MAX_LMR的博客-CSDN博客_窗口函数sum
-- 2
select
user_id,count(1) as times
from
(
select
user_id,add_day,
date_sub(add_day,rn) as date_diff
from
(
select
user_id,add_day,
row_number() over(partition by user_id order by add_day) as rn
from
sales)
t1) t2
where add_day between '2021-01-01' and '2021-01-31'
group by user_id,date_diff
having times >=7;
参考:用rn来判断连续