SQL 比较 case 语句中一列中的多个数字

SQL compare multiple numbers in one column within case statement

我有以下 table:

|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 语句,但我需要一些指导来迭代整个 table 的检查。基本上,第一行的 dP 检查第二行和第三行的压力,然后第二行的 dP 将检查第三行和第四行的压力,依此类推。

如果我没理解错的话,你想要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;