问题一:用户访问日志表 visit_log ,如何获取连续访问大于或等于 2 天的用户?
用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何获取连续访问大于或等于 2 天的用户?
SQL - 17 with visit_log as ( select stack ( 6, '2024-01-01', '101', '湖北', '武汉', 'Android', '2024-01-01', '102', '湖南', '长沙', 'IOS', '2024-01-01', '103', '四川', '成都', 'Windows', '2024-01-02', '101', '湖北', '孝感', 'Mac', '2024-01-02', '102', '湖南', '邵阳', 'Android', '2024-01-03', '101', '湖北', '武汉', 'IOS' ) -- 字段:日期,用户,省份,城市,设备类型 as (dt, user_id, province, city, device_type) ) select * from visit_log;
参考回答:
整体实现比较简单。
-- SQL - 18 select user_id from ( select *, lag(dt, 2 - 1) over (partition by user_id order by dt) as lag_dt from (select dt, user_id from visit_log group by dt, user_id) t0 ) t1 where datediff(dt, lag_dt) + 1 = 2 group by user_id;
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/621572
问题二:用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于相邻日期差实现?
用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于相邻日期差实现?(排序版)
SQL - 17 with visit_log as ( select stack ( 6, '2024-01-01', '101', '湖北', '武汉', 'Android', '2024-01-01', '102', '湖南', '长沙', 'IOS', '2024-01-01', '103', '四川', '成都', 'Windows', '2024-01-02', '101', '湖北', '孝感', 'Mac', '2024-01-02', '102', '湖南', '邵阳', 'Android', '2024-01-03', '101', '湖北', '武汉', 'IOS' ) -- 字段:日期,用户,省份,城市,设备类型 as (dt, user_id, province, city, device_type) ) select * from visit_log;
参考回答:
整体实现比较简单。
-- SQL - 19 select user_id from ( select *, dense_rank() over (partition by user_id order by dt) as dr from visit_log ) t1 where datediff(dt, date_add(dt, 1 - dr)) + 1 = 2 group by user_id;
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/621573
问题三:用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于连续活跃天数实现? -
用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于连续活跃天数实现?
SQL - 17 with visit_log as ( select stack ( 6, '2024-01-01', '101', '湖北', '武汉', 'Android', '2024-01-01', '102', '湖南', '长沙', 'IOS', '2024-01-01', '103', '四川', '成都', 'Windows', '2024-01-02', '101', '湖北', '孝感', 'Mac', '2024-01-02', '102', '湖南', '邵阳', 'Android', '2024-01-03', '101', '湖北', '武汉', 'IOS' ) -- 字段:日期,用户,省份,城市,设备类型 as (dt, user_id, province, city, device_type) ) select * from visit_log;
参考回答:
可以视作 基于相邻日期差实现(排序版) 的衍生版本,该实现能获取到更多信息,如连续活跃天数。
-- SQL - 20 select user_id from ( select *, -- 连续活跃天数 count(distinct dt) over (partition by user_id, cont) as cont_days from ( select *, date_add(dt, 1 - dense_rank() over (partition by user_id order by dt)) as cont from visit_log ) t1 ) t2 where cont_days >= 2 group by user_id;
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/621574
问题四:为什么业务方案讨论阶段的工作量预估很重要?
为什么业务方案讨论阶段的工作量预估很重要?
参考回答:
因为这个预估的工作量可能会成为影响项目能否立项通过的关键因素。老板在考虑投入产出比时,会参考这个预估的工作量。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/621575
问题五:在需求评审中,如何高效决策?
在需求评审中,如何高效决策?
参考回答:
首先需要在评审前确定好所有逻辑,避免在会上展开讨论。其次,当出现意料之外的逻辑或未考虑到的点时,如果有明显解法,应立即决策并写入会议纪要。对于没有明显解法的,应写入待办事项。
关于本问题的更多回答可点击原文查看: