[英]MySQL - Select rows in time range grouped date and id
我在查询时遇到麻烦,我需要从数据库中获取一些数据。
我有一个包含以下数据的表:
id user_id game_id date
1 1 1 2015-08-19
2 1 2 2015-08-19
3 1 3 2015-08-19
4 2 1 2015-08-20
5 2 2 2015-08-20
6 1 1 2015-08-20
7 1 1 2015-08-20
8 3 1 2015-08-20
9 2 1 2015-08-21
10 1 1 2015-08-21
11 1 2 2015-08-21
12 2 1 2015-08-21
我需要获取按日期和user_id分组的日期范围(即2015-08-10至2015-08-22)“玩过”的用户总数。 例如,使用给定的数据,结果应为:
total_players date
1 2015-08-19
3 2015-08-20
2 2015-08-21
我已经在以下查询中尝试过此方法,但它无法正确分组:
SELECT date, COUNT(*) AS total_players
FROM plays
WHERE date BETWEEN '$start_date' AND '$end_date'
GROUP BY date, user_id
有人可以帮助我提供正确的查询吗? 提前谢谢大家。
SELECT date, COUNT(DISTINCT user_id)
FROM plays
WHERE date BETWEEN '$start_date' AND '$end_date'
GROUP BY date
使用您的数据在测试数据库上进行本地测试
total_players date
1 2015-08-19
3 2015-08-20
2 2015-08-21
http://sqlfiddle.com/#!9/08957/3
SELECT `date`, COUNT(DISTINCT user_id) AS total_players
FROM plays
GROUP BY `date`
要么
SELECT `date`, COUNT(DISTINCT user_id) AS total_players
FROM plays
WHERE date BETWEEN '$start_date' AND '$end_date'
GROUP BY `date`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.