目錄
問題描述
使用SQL統計某個表每天的總量和增量MySQL數據庫
例:一個user表 有user_id自增主鍵,還有create_time用戶創建時間
業務需求:讓你統計每天用戶的總量和相比前一天增加了多少用戶量
問題分析
解決方案
首先將每天的總量查出來 表中的時間一般爲date_time類型 所以用個函數
SELECT DATE_FORMAT(create_time,'%Y-%m-%d') dd,COUNT(*) num FROM USER GROUP BY DATE_FORMAT(create_time,'%y-%m-%d')
將上一個SQL作爲一個統計表來計算增量 上SQL。
SELECT a.dd,a.num,SUM(lt.num) AS cum FROM
(SELECT DATE_FORMAT(create_time,'%Y-%m-%d') dd,COUNT(*) num FROM USER GROUP BY DATE_FORMAT(create_time,'%y-%m-%d')) a
JOIN
(SELECT DATE_FORMAT(create_time,'%Y-%m-%d') dd,COUNT(*) num FROM USER GROUP BY DATE_FORMAT(create_time,'%y-%m-%d')) lt
ON a.dd >= lt.dd GROUP BY dd
注:
時間戳格式
FROM_UNIXTIME(create_time,'%Y-%m-%d') as time
日期格式
DATE_FORMAT(create_time,'%Y-%m-%d') as time
擴展方案
創建MySQL數據庫定時任務,每天數據更新,實現數據持久化,減少不必要的算力。
參考文章
https://blog.csdn.net/a114469/article/details/80704590
https://blog.51cto.com/woniu123/1979970