sql在“on子句”与where where

时间:2016-05-06 07:04:53

标签: sql join left-join where-clause

我很感激任何意见。我将几个问题组合成一个简单的查询。

假设表T1记录了由ID标识的员工随时间的收入增长。表中每天有一个ID和收入。

如果他们的基线收入(7天窗口的初始收入)大于10,我想在每天每位员工旁边创建另一列,我会在7天的预见窗口中找到他们的最高收入,如果他们在7天的收入前瞻窗口大于基线收入。我也只对创建2016年前期记录的最高收入感兴趣。

下面的查询是否正确?

select ID,income,Date,max(income2) 
       from ( select T1.ID , T1.income, T1.Date , T2.income as income2  
              From T1 
                left join T1 as T2 
                   on T1.ID = T2.ID 
                  and T2.date between T1.Date and T1.Date + 7 
                  and T1.income > T2.income 
                  and T1.income > 10
                 where T1.date > DATE('2016-01-01') ) g 
        group by T1.ID , T1.income, T1.Date

0 个答案:

没有答案