Accéder au contenu principal

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
            

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
	}
]

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !