zoukankan      html  css  js  c++  java
  • sql -- 获取连续签到的用户列表

    签到表:

    需求:统计连续签到的 用户

    1.根据用户和日期分组

    select user_name, sign_date from user_sign group by user_name, sign_date order by user_name, sign_date

    2.取出行号

    select user_name,
           sign_date,
           if(@tmp = user_name, @rownum := @rownum + 1, @rownum := 1) as num,
           @tmp := user_name
    from (select user_name, sign_date from user_sign group by user_name, sign_date order by user_name, sign_date) a,
         (select @rownum := 0, @tmp := '') b  ;

    3.使用日期做对比,有则叠加,没有则不叠加

    datediff:返回2个日期之间的间隔天数

    select user_name,
           sign_date,
           if(@tmp = user_name and datediff(sign_date, @date) = 1, @rownum := @rownum + 1, @rownum := 1) as num,
           @tmp := user_name,
           @date := sign_date
    from (select user_name, sign_date from user_sign group by user_name, sign_date order by user_name, sign_date) a,
         (select @rownum := 0, @tmp := '', @date := '') b 

    4.取出连续签到4天的用户列表

    select * from (
    select user_name,
           sign_date,
           if(@tmp = user_name and datediff(sign_date, @date) = 1, @rownum := @rownum + 1, @rownum := 1) as num,
           @tmp := user_name,
           @date := sign_date
    from (select user_name, sign_date from user_sign group by user_name, sign_date order by user_name, sign_date) a,
         (select @rownum := 0, @tmp := '', @date := '') b  ) c where num=4;

     

  • 相关阅读:
    cookie小结
    WEB服务器,TOMCAT和servlet之间的关系
    HTTP协议基础总结
    servlet总结
    注解总结
    常使用的String方法
    变量&&常量
    标识符&&注释&&关键字
    配置环境变量&&OpenJDK和OracleJDK区别
    逆向工程__Generate插件安装 && xml配置文件解析 &&使用反向生成代码 && 接口说明
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/11175061.html
Copyright © 2011-2022 走看看