一些牛逼的统计SQL

SQL

 

1.查询连续2天,每天发帖大于等于2次的用户

SELECT
    USER_ID
FROM
    (
        SELECT
            USER_ID,
            DATEDIFF(CREATE_TIME, '1971-01-01') - rn AS diff,
            CREATE_TIME
        FROM
            (
                SELECT
                    USER_ID ,@r := @r + 1 AS rn,
                    CREATE_TIME
                FROM
                    (
                        SELECT
                            COMMENT_ID,
                            USER_ID,
                            CREATE_TIME,
                            count(1)
                        FROM
                            T_SD_COMMENT t,
                            (SELECT @r := 0) r
                        GROUP BY
                            USER_ID,
                            DATE(CREATE_TIME)
                        HAVING
                            count(1) > 1
                        ORDER BY
                            USER_ID,
                            CREATE_TIME
                    ) z
            ) z
    ) z
GROUP BY
    USER_ID ,diff
HAVING
    MAX(DATE(CREATE_TIME)) - MIN(DATE(CREATE_TIME)) > 0

 

 

2. 连续7天,每天都有发贴

SELECT DISTINCT USER_ID
FROM (SELECT MAX(date) - MIN(date) AS less, USER_ID
    FROM (SELECT date - rn AS diff, USER_ID  , date, rn
        FROM (SELECT @wy := @wy + 1 AS rn, USER_ID, datediff(CREATE_TIME, '1971-01-01') AS date, CREATE_TIME
            FROM (SELECT date(CREATE_TIME) AS CREATE_TIME, USER_ID
                FROM T_SD_COMMENT, (SELECT @wy := 0
                    ) w
                GROUP BY USER_ID, date(CREATE_TIME)
                ORDER BY USER_ID, date(CREATE_TIME)
                ) x
            ) x
        ) x
    GROUP BY diff, USER_ID
    ) x
WHERE less >= 6  

 

2. 每10钟为粒度的统计

GROUP BY
SUBSTR(createtime + '', 1, 11);

 

posted @ 2014-10-15 15:05  mjorcen  阅读(493)  评论(0编辑  收藏  举报