题解 | #每天的平均uv点击率和平均曝光点击率#
每天的平均uv点击率和平均曝光点击率
https://www.nowcoder.com/practice/cfbdb30f02e74d31beeddb0ad5521791
考察内容:聚合函数、去重、字符串函数、排序
思路:
① 先计算22年9月每天每个视频的uv点击率 uctr 和曝光点击率 pctr:用 date_format(ds, '%Y%m') = '202209'
筛选时间,uv点击率=点击人数/分发人数,曝光点击率=点击次数/分发次数
- 分发次数:count(uid)
- 点击次数:sum(is_click)
- 分发人数:count(distinct uid)
- 点击人数:count(distinct case when is_click = 1 then uid end)
② 再计算每天里被分发的多个视频的平均uv点击率和平均曝光点击率:使用聚合函数 avg,将值转化为百分数,round 保留1位小数,用字符串连接函数 concat 在末尾加上 %
③ 按照日期 ds 降序排序
select ds, concat(round(avg(uctr) * 100, 1), '%') as avg_uctr, concat(round(avg(pctr) * 100, 1), '%') as avg_pctr from ( select ds, vid, count(distinct case when is_click = 1 then uid end) / count(distinct uid) as uctr, sum(is_click) / count(uid) as pctr from video_recom_click_log_tb where date_format(ds, '%Y%m') = '202209' group by ds, vid ) a group by ds order by ds desc ;