Utiliser la clause GROUP BY
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
Dans Talend Data Mapper avec la mise à jour mensuelle 8.0.1-R2024-11 ou une plus récente, vous pouvez utiliser une liste de clés séparées par une virgule dans la clause GROUP BY :
GROUP BY expression_1 AS identifier_1, expression_2 AS identifier_2
Note InformationsRemarque : Il n'y a pas de limite au nombre de clés. Chaque expression de groupe peut avoir un alias.
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
}
]