如何使用SQL查询确定趋势的增加或减少

时间:2019-07-19 15:55:22

标签: sql

我有类似

的数据
EmpID   Salary Paid Date Salary Paid
100 628           1/11/2019
100 1086              1/25/2019
100 1055              2/8/2019
100 981           2/22/2019
100 653           3/8/2019
100 871           3/22/2019
100 385           4/18/2019
101 2032              1/4/2019
101 3466              1/18/2019
101 2652              2/1/2019
101 2013              4/26/2019

有没有办法识别“趋势减少”标志(是/否)。对于所有行,只能重复一条记录或最好是“减少”的决定。像

EmpID   Salary Paid Date Salary Paid    Decreasing Flag
100 628                1/11/2019    Y
100 1086                   1/25/2019    Y
100 1055                   2/8/2019 Y
100 981                2/22/2019    Y
100 653                3/8/2019 Y
100 871                3/22/2019    Y
100 385                4/18/2019    Y
101 2032                   1/4/2019 N
101 3466                   1/18/2019    N
101 2652                   2/1/2019 N
101 2013                   4/26/2019    N

Y / N是每个Empid(不是每一行)的值

谢谢

我已经累了,但是找不到合适的方法

1 个答案:

答案 0 :(得分:0)

如果要比较趋势的第一和最后工资,可以使用first_value()

select t.*,
       (case when first_value(salary) over (partition by empid order by paid_date) <
                  first_value(salary) over (partition by empid order by paid_date desc)
             then 'N' else 'Y'
        end) as decreasing_flag
from t;

请注意,first_value()的语法在数据库之间可能会略有不同。