查询连续7天的数据sql问题

参考:http://www.dreaminto.com/2012/0312/611.html

下面是两段根据自己需求改造的两段sql,备用
1、查询连续一个动作超过30天的用户id编号的集合

SET @wy=0;

SELECT GROUP_CONCAT(DISTINCT userid)

FROM (SELECT MAX(DATE)-MIN(DATE) LESS,userid

      FROM (SELECT DATE-rn diff, userid, DATE, rn

            FROM (SELECT @wy:=@wy+1 rn, userid,

                         DATEDIFF(operateTime,'1971-01-01') DATE,operateTime

                  FROM (SELECT DATE(operateTime) operateTime, userid FROM ub_log

                        WHERE operateTime>='2014-04-29 00:00:00' AND

                              operateTime <'2014-07-28 00:00:00'
                              AND uri = 'synchrodata'

                        GROUP BY userid, DATE(operateTime)

                        ORDER BY userid, DATE(operateTime)

                       )X

                 )X

           )X

       GROUP BY diff,userid

      )X

WHERE LESS>=30;

2、查询连续同一个动作大于等于30天的用的信息

SET @wy=0;

SELECT u.userid 'ID',u.username '用户名称',u.nickname '昵称',u.regip '注册时间',CASE ext.sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '保密' END AS '性别',temp.operatetime '最后使用时间' 
FROM ub_user u LEFT JOIN ub_user_ext ext ON u.userid = ext.userid 
LEFT JOIN (SELECT * FROM (SELECT  userid ,operatetime FROM ub_log  WHERE uri = 'synchrodata' AND userid IN (
'第一步中查询出来的id的集合替换这里'
) ORDER BY operatetime DESC) t GROUP BY userid ORDER BY userid DESC) temp ON u.userid = temp.userid

WHERE u.userid IN (SELECT DISTINCT userid

FROM (SELECT MAX(DATE)-MIN(DATE) LESS,userid

      FROM (SELECT DATE-rn diff, userid, DATE, rn

            FROM (SELECT @wy:=@wy+1 rn, userid,

                         DATEDIFF(operateTime,'1971-01-01') DATE,operateTime

                  FROM (SELECT DATE(operateTime) operateTime, userid FROM ub_log

                        WHERE operateTime>='2014-04-29 00:00:00' AND

                              operateTime <'2014-07-28 00:00:00'
                              AND uri = 'synchrodata'

                        GROUP BY userid, DATE(operateTime)

                        ORDER BY userid, DATE(operateTime)

                       )X

                 )X

           )X

       GROUP BY diff,userid

      )X

WHERE LESS>=30) ORDER BY u.userid DESC;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值