La clause GROUP BY
est utilisée pour regrouper les résultats d'une clause précédente en se basant sur une expression.
La clause
GROUP BY
peut être suivie d'une expression simple ou conditionnelle. Vous pouvez également définir un alias utilisant le mot-clé AS
:GROUP BY expression AS identifier
Après le regroupement, seule l'expression de regroupement peut être référencée dans la requête courante. Les éléments hors regroupement peuvent être référencés uniquement comme arguments dans les fonctions d'agrégation.
Par exemple, avec les données d'entrée suivantes :
{
"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
}
]
}
]
}
]
}
Vous pouvez utiliser la clause
GROUP BY
pour regrouper les résultats par order_id
et utiliser la fonction sum
pour obtenir la somme de tous les éléments dans l'ordre :FROM customers UNNEST orders UNNEST items
GROUP BY order_id AS id
SELECT {
id,
total_items = sum(quantity)
}
Cette requête retourne le résultat suivant :
[
{
"id": "abc-12345",
"total_items": 2
},
{
"id": "def-12345",
"total_items": 4
}
]