SELECT dt,ROUND(SUM(view_len_sec)/COUNT(DISTINCT uid),1) AS avg_viiew_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
GROUP BY dt
ORDER BY avg_viiew_len_sec;

本题要点:

1.计算平均数时要注意DISTINCT

2.GROUP BY存在时,其对应的SELECT中必须要么是聚合键,要么是聚合函数。这个聚合函数允许有ROUND