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

时间:2018-07-04 17:17:10

标签: sql amazon-web-services amazon-athena presto

我有下表:

|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检查第三行和第四行的压力,依此类推。

1 个答案:

答案 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;