mysql – 计算一个人的连续出现次数 – SQL

我有一张桌子:

Name | ID | Event
Smith| 1  | 
Smith| 2  | Y
Smith| 3  | 
Jones| 1  | 
Jones| 2  | Y
Jones| 3  | 
Jones| 4  | Y

我想计算每个人在每个点看到一个事件的次数,例如:

Name | ID | Event | Event Count
Smith| 1  |       | 0
Smith| 2  | Y     | 1
Smith| 3  |       | 1
Jones| 1  |       | 0
Jones| 2  | Y     | 1
Jones| 3  |       | 1
Jones| 4  | Y     | 2

我猜我不能在SQL中这样做?如果没有,你能非常清楚我是如何在SAS(或任何适当的方式)中做到这一点的,因为我是新手!

(仅供参考,这导致我能够区分在每个事件之前或之后发生的行 – 即按事件=空白过滤,任何0发生在第一个事件之前,任何事情发生在1之后,等等.可能有一个更简单的方法做这个.)

谢谢!

解决方法:

如果您想沿着SAS路线走下去,它会顺序读取数据,因此非常擅长此类问题

data have;
infile datalines missover;
input Name $ID  Event $;
datalines;
Smith 1   
Smith 2   Y
Smith 3   
Jones 1   
Jones 2   Y
Jones 3   
Jones 4   Y
;
run;

proc sort data=have;
by name id;
run;

data want;
set have;
by name id;
if first.name then event_count=0;
event_count+(event='Y');
run;
上一篇:SAS学习笔记34 指针控制


下一篇:CMDB与自动化部署的联动