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

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

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

  1. 关键知识点:DAYOFWEEK(),DATE_ADD(),count(distinct),round()
  2. 思路解析:用库函数DAYOFWEEK得到每个日期是星期几,然后使用DATE_ADD转换到当周周一的日期,再按周一日期分组,计算每个每组内用户登录总数(count(1))和用户数(count(distinct uid)),总次数除以总人数就是平均登录次数。保留小数位数用round()
select
  week_begin,
  round(count(1) / count(distinct uid), 2) as avg_times
from
  (
    select
      uid,
      DATE_ADD(login_date, INTERVAL 1 - day_delta DAY) as week_begin
    from
      (
        select
          uid,
          login_date,
          IF(DAYOFWEEK(login_date) = 1, 8, DAYOFWEEK(login_date)) - 1 as day_delta
        from
          user_login_tb
      ) as t_day_delta
  ) as t_week_begin
group by
  week_begin
order by
  week_begin;

遇到问题记得私聊哦

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

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