我有两列,大部分是0,少数是1。我想检查如果第一列中出现1,那么第二列中的1是否出现在该索引的5行范围内。例如,假设一个1出现在第1列的第83行,那么如果一个或多个1发生在第2列的第83-88行,我希望返回TRUE,如果不是这样,则返回FALSE。代码块中列出了这方面的示例。我想统计出现TRUE和FALSE的次数。
TRUE:
0 0
0 0
0 0
1 1
0 0
0 0
0 0
0 0
0 0
0 0
TRUE:
0 0
0 0
0 0
1 0
0 0
0 0
0 1
0 1
0 0
0 0
FALSE:
0 0
0 0
0 1
1 0
0 0
0 0
0 0
0 0
0 0
0 1
我不知道从哪里开始,所以我没有任何代码可以开始:(
谨致问候,Kai
假设您有一个排序列,您可以使用窗口函数:
select (case when count(*) = 0 then 'false' else 'true' end)
from (select t.*,
max(col2) over (order by <ordering column>
rows between current row and 4 following
) as max_col2_5
from t
) t
where col1 = 1 and max_col2_5 = 1;