Sql 识别具有最大连续值的行
我在一个表中有两列。根据预定义的条件,第二列有1或0。有人能帮我确定1s的最大连续出现的逻辑吗。例如,在下表中,最大连续出现次数在第7行和第18行之间。只要用逻辑来确定这一点就足够了 谢谢创建间隔Sql 识别具有最大连续值的行,sql,sas,Sql,Sas,我在一个表中有两列。根据预定义的条件,第二列有1或0。有人能帮我确定1s的最大连续出现的逻辑吗。例如,在下表中,最大连续出现次数在第7行和第18行之间。只要用逻辑来确定这一点就足够了 谢谢创建间隔 data intervals ; set have ; by B NOTSORTED ; if first.b then start=A ; retain start ; if last.b then do; end = A ; duration = end
data intervals ;
set have ;
by B NOTSORTED ;
if first.b then start=A ;
retain start ;
if last.b then do;
end = A ;
duration = end - start + 1 ;
output;
end;
drop A ;
run;
然后找到最长持续时间的间隔。也许你想要第一次出现的最长持续时间
proc sort data=intervals out=want ;
by descending duration start;
run;
data want ;
set want (obs=1);
where B=1;
run;
像这样的
data have;
input A B;
datalines;
1 0
2 0
3 1
4 1
5 1
6 0
7 0
8 0
9 1
10 0
11 1
12 1
13 1
14 1
15 1
16 1
17 0
18 0
19 0
20 1
21 0
;
proc sort data=have;
by A;
run;
data want;
set have;
if B=1 then count + 1;
if B = 0 then count = 0;
run;
proc sql;
select max(count) as max_value from want;
请以纯文本形式提供样本数据和预期结果。另外,您是在使用proc sql还是在连接数据库?如果连接到数据库,请选择哪个数据库(MySQL、SQL Server等)?