[目标]
我们想找出事件“ A”在时间“ X”之前发生的频率。更具体地说,鉴于下面的数据集,我们希望找出先前购买的数量。
[背景]
DMBS:MySQL 5.6
我们有以下数据集:
user | date
1 | 2015-06-01 17:00:00
2 | 2015-06-02 18:00:00
1 | 2015-06-03 19:00:00
[所需输出]
user | date | purchase count
1 | 2015-06-01 17:00:00 | 1
2 | 2015-06-02 18:00:00 | 1
1 | 2015-06-03 19:00:00 | 2
[已经尝试]
我们使用表本身的内部联接设法在特定日期获得计数。
[问题)]
-如何在单个查询中执行此操作?
最佳答案
可以使用用户定义的变量来完成此操作,该变量的速度如上一个答案中所述。
这需要根据某些顺序为每个组创建增量变量。并根据给定的数据设置其user
和date
。
在这里你如何实现它
select
user,
date,
purchase_count
from (
select *,
@rn:= if(@prev_user=user,@rn+1,1) as purchase_count,
@prev_user:=user
from test,(select @rn:=0,@prev_user:=null)x
order by user,date
)x
order by date;
将表名
test
更改为您的实际表名http://sqlfiddle.com/#!9/32232/12
关于mysql - 查询事件在给定时间发生的频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30980458/