繁体   English   中英

MySQL-在时间范围内分组日期和ID的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM