mysql可根据create_time 字段进行统计每月,每周新增数据,其中mysql 默认周日为每周的第一天,所以YEARWEEK函数要稍作改变。
表数据如下:
id name create_time update_time pid
1 a 2018-11-07 18:24:30
2 b 2018-11-01 18:24:44 1
3 c 2018-11-05 18:51:21 1
4 d 2018-10-03 18:25:15 1
5 e 2018-11-07 18:33:53 1
其中,pid是上级用户id,表自身进行左链接查询。SQL文如下:
SELECT COUNT(*) AS totalCount, COUNT(f.id) AS monthCount, COUNT(c.id) AS weekCount
FROM `customer` lc
LEFT JOIN customer f ON f.id = lc.`id` AND DATE_FORMAT(f.create_time ,'%y-%m') = DATE_FORMAT(NOW(),'%y-%m')
LEFT JOIN customer c ON c.id = lc.id AND YEARWEEK(c.create_time,1) = YEARWEEK(NOW(),1)
WHERE lc.pid = 1
其中YEARWEEK(NOW(),1),设置周一为每周的第一天,mysql默认周日为每周的第一天。
totalCount monthCount weekCount
4 3 2