我有下表:
|n|Minutes|Pressure|
--------------------
|1|0.5 |2.8 |
|2|1 |3.2 |
|3|1.5 |3.3 |
,我需要检查1分钟的压力> 0.5分钟的压力,以及1.5分钟的压力> 1分钟的压力,如果为true,则返回1,如果为false,则返回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检查第二行和第三行的压力,然后第二行的dP检查第三行和第四行的压力,依此类推。
答案 0 :(得分:0)
如果我的理解正确,那么您想要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;