SQL сравнивает несколько чисел в одном столбце внутри оператора case - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующая таблица:

|n|Minutes|Pressure|
--------------------
|1|0.5    |2.8     |
|2|1      |3.2     |
|3|1.5    |3.3     |

и мне нужно проверить, если давление в 1 минуту> давление в 0,5 минуты и что давление в 1,5 минуты> давление в 1 минуту, возвращая 1, если истина, и 0, если ложь. Это выполняется в Excel по следующей формуле:

=IF(AND(B11<B10,B12<B11),1,0)

И я хочу следующий вывод

|n|Minutes|Pressure|dP|
-----------------------
|1|0.5    |2.8     |1 |
|2|1      |3.2     |1 |
|3|1.5    |3.3     |1 |

Я достаточно знаком с SQL, чтобы знать, как использовать оператор case с обоими критериями и для них, но мне нужно некоторое руководство, повторяющее проверку по всей таблице. По сути, dP в первом ряду проверяет давление во 2-м и 3-м рядах, затем dP во втором ряду проверяет давление в 3-м и 4-м рядах и т. Д.

1 Ответ

0 голосов
/ 04 июля 2018

Если я правильно понимаю, вы хотите lead():

select t.*,
       (case when lead(pressure, 1) over (order by n) < pressure and
                  lead(pressure, 2) over (order by n) < lead(pressure, 1) over (order by n)
             then 1 else 0
        end) as dp
from t;
...