2021年11月每天的人均浏览文章时长
明确题意:
统计2021年11月每天的人均浏览文章时长(秒数),结果保留1位小数,并按时长由短到长排序
问题分解:
- 计算每次文章浏览的时长和日期:
- 过滤目标时间窗的有效浏览记录:WHERE artical_id != 0 AND DATE_FORMAT(in_time, "%Y%m") = "202111"
 - 将进入时间转化为日期:DATE(in_time) as dt
 - 计算浏览时长:TIMESTAMPDIFF(SECOND, in_time, out_time) as view_len_sec
 
 - 按日期分组:GROUP BY dt
 - 计算人均时长(=总时长÷人数):SUM(view_len_sec) / COUNT(DISTINCT uid) as avg_view_len_sec
 - 保留1位小数:ROUND(x, 1)
 
细节问题:
- 表头重命名:as
 - 按时长由短到长排序:ORDER BY avg_view_len_sec
 
完整代码:
SELECT dt, ROUND(SUM(view_len_sec) / COUNT(DISTINCT uid), 1) as avg_view_len_sec
FROM (
    SELECT uid, DATE(in_time) as dt,
        TIMESTAMPDIFF(SECOND, in_time, out_time) as view_len_sec
    FROM tb_user_log
    WHERE artical_id != 0 AND DATE_FORMAT(in_time, "%Y%m") = "202111"
) as t_uid_len
GROUP BY dt
ORDER BY avg_view_len_sec;



京公网安备 11010502036488号