题解 | 统计自然周平均登录次数情况

统计自然周平均登录次数情况

https://www.nowcoder.com/practice/4655e5dfa8f64166875d6f77558a1fc8

SELECT
    DATE_SUB(login_date , INTERVAL WEEKDAY(login_date) DAY ) as week_begin,
    ROUND(COUNT(id) / COUNT(DISTINCT(uid)),2) as avg_times
FROM user_login_tb
GROUP BY week_begin
ORDER BY week_begin;

题目需要对自然周进行分组→每组组名是每周周一:

  • 第一步,计算日期到周一的偏移天数,weekday() 返回指定日期的‘周内索引值’:周一→返回0;
  • 第二步,日期回退到周一,date_sub(xx,INTERVAL 偏移天数,DAY) 将指定日期 - 指定时长;
  • 最终效果:无论是一周中的那一天,统统变成该周周一,作为分组的条件;

统计每周的平均登录次数:每周登录次数/每周登录人数:

  • 登录次数:COUNT;
  • 登录人数:COUNT(DISTINCT ())
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务