SQL: Есть ли способ узнать, находится ли значение в указанном c диапазоне индекса другого значения? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть две колонки, заполненные в основном нулями и несколькими единицами. Я хочу проверить, встречается ли 1 в первом столбце, а 1 - во втором столбце в диапазоне 5 строк этого индекса. Так, например, допустим, что 1 встречается в строке 83 столбца 1, тогда я хотел бы вернуть TRUE, если в столбце 2 строки 83-88 встречается один или несколько единиц, и 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

Я понятия не имею, с чего начать, поэтому у меня нет кода для начала: (

С уважением Кай

1 Ответ

0 голосов
/ 02 марта 2020

Если у вас есть столбец заказа, вы можете использовать оконные функции:

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;
...