目录
问题描述
使用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