Mysql 如何使用滚动窗口?
表t 在此表中,我想使用滚动窗口统计过去3天内唯一的活动用户 7月24日,计数(不同用户)为2。7月23日,结果应该是1 7月20日,结果应该是3 我想马上得到历史结果 如何在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
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;