2017-03-28 13 views
1

私は以下のような顧客取引データを有しており、注文単位の合計が以前の注文よりも一貫して少ない顧客のみのリストを作成する必要があります。すなわち、n番目の注文で購入された合計数量は、n-1番目の注文で購入された合計数量より少なく、次の前の注文数も少ない。それを言うもう1つの方法は、時間の経過とともに顧客が購入するユニットの数を減らすことです。時間の経過とともに購入する顧客のリストを作成するにはどうすればよいですか?

Custid date units 
123 28-03-17 100 
123 27-03-17 100 
123 26-03-17 100 
999 25-03-17 10 
999 24-03-17 20 
893 24-03-17 39 
893 28-03-17 48 
893 24-03-17 10 
893 19-03-17 75 
893 12-02-17 10 

コードの出力は、顧客999

する必要がありますこのようなことを私が最初に取引を仕分けして、条件文を使用した後にラグ機能を使用するのではと思ったが、トランザクションの数は、顧客の間で変化します。

よろしく

答えて

2

使用lag()と条件付き集約:

select custid 
from (select t.*, 
      lag(units) over (partition by custid order by date) as prev_units 
     from t 
    ) t 
group by custid 
having sum(case when units >= pev_units then 1 else 0 end) = 0; 
関連する問題