[目标]
我们想找出事件“ 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



[已经尝试]
我们使用表本身的内部联接设法在特定日期获得计数。

[问题)]
-如何在单个查询中执行此操作?

最佳答案

可以使用用户定义的变量来完成此操作,该变量的速度如上一个答案中所述。
这需要根据某些顺序为每个组创建增量变量。并根据给定的数据设置其userdate

在这里你如何实现它

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/

10-16 13:35
查看更多