微信公众平台开发: 使用MySQL统计页面访问及排名

手册/FAQ (200) 2016-04-06 10:01:31

   统计访问页面数量,以分辨率进行排名

 SELECT CONCAT(`height` , '*', `width`) AS `resolution` , COUNT(CONCAT(`height`, '*', `width`)) AS `total`   

 FROM `wifi_status_page`   

 GROUP BY CONCAT(`height`, '*', `width`)   

 ORDER BY `total` DESC   

 LIMIT 0 , 30  

最近7天页面访问量,每日统计数量,以日期为序

SELECT td AS showdate, COALESCE( totalcount, 0 ) AS totalcount   

FROM (  

   SELECT CURDATE( ) AS td  

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -1 DAY )   

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -2 DAY )   

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -3 DAY )   

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -4 DAY )   

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -5 DAY )   

    UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -6 DAY )   

    ORDER BY td  

)a  

LEFT JOIN (  

    SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT( id ) AS totalcount  

    FROM wifi_status_page  

    WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -6 DAY) AND CURDATE()   

    GROUP BY add_data  

)b ON a.td = b.add_data  

最近30天页面访问量,每日统计数量,以日期为序

SELECT td AS showdate, COALESCE( totalcount, 0 ) AS totalcount   

    FROM (  

        SELECT CURDATE( ) AS td  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY)  

        UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY)  

        ORDER BY td  

    )a  

    LEFT JOIN (  

        SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT( id ) AS totalcount  

        FROM wifi_status_page  

        WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE()   

        GROUP BY add_data  

    )b ON a.td = b.add_data  

 

昨天24小时分时

SELECT td AS showhour  

FROM (  

    SELECT DATE_ADD(CURDATE(), INTERVAL -1 HOUR) as td  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 HOUR)  

    UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 HOUR)  

    ORDER BY td  

)a  

 

今天过去的11个小时

SELECT td AS showhour  

FROM (  

    SELECT NOW() AS td  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -1 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -2 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -3 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -4 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -5 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -6 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -7 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -8 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -9 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -10 HOUR)  

    UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -11 HOUR)  

    ORDER BY td  

)a  

THE END