Mysql 如何使用滚动窗口?

Mysql 如何使用滚动窗口?,mysql,Mysql,表t 在此表中,我想使用滚动窗口统计过去3天内唯一的活动用户 7月24日,计数(不同用户)为2。7月23日,结果应该是1 7月20日,结果应该是3 我想马上得到历史结果 如何在mysql中编写查询 send time user 2016-07-24 12:00:00 a 2016-07-24 01:00:00 b 2016-07-23 00:00:00 a 2016-07-22 00:00:00 a 2016-07-21 00:00:00 a 2016-07-20 00:00

表t

在此表中,我想使用滚动窗口统计过去3天内唯一的活动用户

7月24日,计数(不同用户)为2。7月23日,结果应该是1

7月20日,结果应该是3

我想马上得到历史结果

如何在mysql中编写查询

send time           user
2016-07-24 12:00:00 a
2016-07-24 01:00:00 b
2016-07-23 00:00:00 a
2016-07-22 00:00:00 a
2016-07-21 00:00:00 a
2016-07-20 00:00:00 a
2016-07-19 12:00:00 b
2016-07-18 11:00:00 c
查询:

create table t
(   id int auto_increment primary key,
    send_time datetime not null,
    user varchar(100) not null
);

insert t (send_time,user) values
('2016-07-24 00:00:00',       'a'),
('2016-07-24 01:00:00',       'b'),
('2016-07-23 12:00:00',       'a'),
('2016-07-22 12:00:00',       'a'),
('2016-07-21 12:00:00',       'a'),
('2016-07-20 12:00:00',       'a'),
('2016-07-19 12:00:00',       'b'),
('2016-07-18 11:00:00',       'c');
如果需要在最后3天滚动,只需在末尾执行
限制3


请花点时间为用户设置数据。帮助别人帮助你。图片不算数。

使用Drew的模型,但使用正确的查询-p

select date(send_time),count(distinct user)  
from t  
group by date(send_time)  
order by date(send_time) desc; 
+-----------------+----------------------+
| date(send_time) | count(distinct user) |
+-----------------+----------------------+
| 2016-07-24      |                    2 |
| 2016-07-23      |                    1 |
| 2016-07-22      |                    1 |
| 2016-07-21      |                    1 |
| 2016-07-20      |                    1 |
| 2016-07-19      |                    1 |
| 2016-07-18      |                    1 |
+-----------------+----------------------+
7 rows in set (0.00 sec)

这是怎么回事?太好了!你试过什么?幸运的是草莓:p
SELECT DATE(x.send_time) send_time 
     , COUNT(DISTINCT y.user) unique_users 
  FROM t x 
  JOIN t y ON DATE(y.send_time) BETWEEN DATE(x.send_time) - INTERVAL 3 DAY AND DATE(x.send_time) 
 GROUP 
    BY DATE(x.send_time) 
 ORDER 
    BY send_time DESC;