统计每天的用户注册数。与其每次都去扫描用户表,不如每天凌晨跑个定时任务,把结果算好存起来
数据库
user表

用户统计数据聚合表

定时任务
java
@XxlJob("dailyUserStatic")
public void dailyUserStatic() {
log.info("xxl-job dailyUserStatic");
Integer newUserCount = userService.newUserCount();
Integer activeUserCount = userService.activeUserCount();
UserDailyStatic userDailyStatic = new UserDailyStatic();
userDailyStatic.setStatDate(LocalDate.now().minusDays(1));
userDailyStatic.setActiveUserCount(activeUserCount);
userDailyStatic.setNewUserCount(newUserCount);
userDailyStaticService.save(userDailyStatic);
}
sql
newUserCount
java
<select id="newUserCount">
SELECT count(1) AS new_user_count
FROM `user`
WHERE DATE(create_time) = DATE(DATE_SUB(CURDATE(),INTERVAL 1 DAY))
GROUP BY DATE(create_time)
</select>
activeUserCount
java
<select id="activeUserCount" resultType="java.lang.Integer">
SELECT count(1) AS active_user_count
FROM `user`
WHERE DATE(login_time) = DATE(DATE_SUB(CURDATE(),INTERVAL 1 DAY))
GROUP BY DATE(login_time)
</select>