文章目录
- 题目需求
- 思路一
- 实现一
- 题目来源
题目需求
从用户登录明细表(user_login_detail)中查询每天的新增用户数,若一个用户在某天登录了,且在这一天之前没登录过,则任务该用户为这一天的新增用户。
期望结果如下:
login_date_first (日期) | user_count (新增用户数) |
---|---|
2021-09-21 | 1 |
2021-09-22 | 1 |
2021-09-23 | 1 |
2021-09-24 | 1 |
… | … |
需要用到的表:
用户登录明细表:user_login_detail
user_id(用户id) | ip_address(ip地址) | login_ts(登录时间) | logout_ts(登出时间) |
---|---|---|---|
101 | 180.149.130.161 | 2021-09-21 08:00:00 | 2021-09-27 08:30:00 |
102 | 120.245.11.2 | 2021-09-22 09:00:00 | 2021-09-27 09:30:00 |
103 | 27.184.97.3 | 2021-09-23 10:00:00 | 2021-09-27 10:30:00 |
思路一
实现一
-- 2) 按 first_val 分组计数
select login_date_first,
count(*) as user_count
from (
-- 1) 统计 每个用户 首次登录日期
select distinct user_id,
date_format(first_value(login_ts) over (partition by user_id order by login_ts),
'yyyy-MM-dd') as login_date_first
from user_login_detail
) t1
group by login_date_first;
题目来源
http://practice.atguigu.cn/#/question/8/desc?qType=SQL