2017-05-01 6 views
0

http://sqlfiddle.com/#!15/157ad/3複数のグループのPosgresql JSON集約。

複数の列にグループ化し、その結果を表に集計することは可能ですか?

私はデータベースにすべての出荷を、また各出荷にはその出荷に属するコンテナと各出荷先の位置を教えてもらうように依頼しています。私は1つのグループ分けでこれを行うことができますが、私は2つのグループごとに分かりません。これは、単一のSQLクエリでこの質問をすることは可能ですか?

答えて

0
select 
    s.shipmentName, 
    array_agg(distinct sc.pk_shipmentContainerId) as container, 
    array_agg(distinct l.locationName) as location 
from 
    shipment s 
    inner join 
    shipmentContainer sc on s.pk_shipmentId = sc.fk_shipmentId 
    inner join 
    shipmentMove sm on s.pk_shipmentId = sm.fk_shipmentId 
    inner join 
    location l on sm.fk_locationId = l.pk_locationId 
group by s.pk_shipmentId, 1 
order by s.pk_shipmentId 
; 
      shipmentname    | container |      location       
-------------------------------------+---------------+------------------------------------------------------- 
1.shipment of bananas - Loc 1,2,3,4 | {1,2,3}  | {"Location 1","Location 2","Location 3","Location 4"} 
2.shipment of apples Loc 1,2,3,4 | {4}   | {"Location 1","Location 2","Location 3","Location 4"} 
3.more bananas Loc 1,2,4,5   | {5,6,7,8,9} | {"Location 1","Location 2","Location 4","Location 5"} 
5.lots of pants Loc 5,3,2,1   | {10,11,12,13} | {"Location 1","Location 2","Location 3","Location 5"}