GROUP BY句を使う
GROUP BY句は、式に基づいて前の句の結果をグルーピングするために使われます。
GROUP BY句の後には単純式か条件式が必要です。また、ASキーワードを使えばエイリアスを定義することもできます。
GROUP BY expression AS identifier
グルーピング後、現在のクエリーで参照できるのはグルーピング式のみです。グルーピングされていないエレメントは、集計ファンクションの引数としてのみ参照できます。
たとえば次の入力データでは:
{
"customers":[
{
"firstName":"John",
"lastName": "Smith",
"orders":[
{
"order_id":"abc-12345",
"items":[
{
"item_id":"97516848-jiargn",
"quantity":2
}
]
}
]
},
{
"firstName":"Jane",
"lastName": "Doe",
"orders":[
{
"order_id":"def-12345",
"items":[
{
"item_id":"97516848-kftesn",
"quantity":3
},
{
"item_id":"96946848-metasb",
"quantity":1
}
]
}
]
}
]
}
GROUP BY句を使えばorder_idで結果をグルーピングでき、sumファンクションを使えばオーダーの全アイテムの合計を取得できます。
FROM customers UNNEST orders UNNEST items
GROUP BY order_id AS id
SELECT {
id,
total_items = sum(quantity)
}
このクエリーは次の結果を返します:
[
{
"id": "abc-12345",
"total_items": 2
},
{
"id": "def-12345",
"total_items": 4
}
]