表
-------------------------
id | user_id | date
------------------------
1 1 2017-09-12
2 1 2017-09-12
3 1 2017-09-13
4 2 2017-09-14
5 2 2017-09-15
---------------------------
我想返回包含用户数量的每月记录。
SELECT DATE_FORMAT(date, '%Y-%m') AS date_period, COUNT(DISTINCT user_id) AS c
FROM stats GROUP by date_period
上面的查询返回 2017-09 的计数为 2,但我想避免每天出现重复的 user_id/date。
id | user_id | date
1 1 2017-09-12
2 1 2017-09-12
以上行应计为 1,因为它是同一用户和同一日期
id | user_id | date
3 1 2017-09-13
上面的记录是user_id => 1,但是不同的日期,所以应该被计算在内。
id | user_id | date
4 2 2017-09-14
5 2 2017-09-15
User_id => 2 在不同日期有两行,因此应计为 2
1 +1 + 2 = 4
计数结果应为4。
我被查询返回每月的 user_id (避免同一天的重复记录)
最佳答案
这对我有用:
SELECT
DATE_FORMAT(date, '%Y-%m') AS 'sum_month',
user_id,
COUNT(DISTINCT user_id,date) AS 'Count'
FROM test
GROUP BY sum_month,user_id;
希望对您有帮助。
关于Mysql:仅当日期不同时才计算每月不同的user_ids,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690597/