2016-05-26 5 views
0

私は(ユーザーの軌道の)座標表を国コードで持っており、データを日付順に並べています。GROUP BY前後の値を尊重する

user,coordinates, country 
1, place1, US 
1. place2, US 
1, place3, UK 
1, place4, UK 
1, place1, US 
2, place5, US 
2, place6, US 
2, place7, US 
2, place8, US 

私は私だけで "米国、英国" としてSEQ1を取得し、GROUP BYを行うと、この

1x "US, UK, US" ; 
1x "US", 

のような動きの国のシーケンスを取得したいです。ユーザーがどこに移動したかを知るために、これらの固有の値をシーケンス内に持つ必要があります。この並べ替えられたシーケンスの前の行と次の行を尊重しているグループのバージョンのようなものがありますか?

+1

注文を指定する列が必要です。 –

答えて

0

順序を指定する列が必要です。その列が存在すると仮定します。

select user, string_agg(country, ', ' order by ??) as countries 
from (select t.*, 
      lag(country) over (partition by user order by ??) as prev_country 
     from t 
    ) t 
where prev_country is null or country <> prev_country; 

??の注文に正しい列を指定するだけです。