Utiliser la clause GROUP AS
La clause GROUP AS est utilisée pour créer un alias pour les groupes générés par une clause GROUP BY, pour pouvoir les référencer plus tard dans la requête.
Le mot-clé GROUP AS doit être suivi par un alias devant être unique au sein de la requête.
GROUP AS alias
Par exemple, avec les données d'entrée suivantes :
{
"orders":[
{
"customer":"John Smith",
"order_id":"abc-12345",
"items":[
{
"item_id":"97516848-jiargn",
"quantity":2
}
]
},
{
"customer":"Jane Doe",
"order_id":"def-12345",
"items":[
{
"item_id":"97516848-kftesn",
"quantity":3
},
{
"item_id":"96946848-metasb",
"quantity":1
}
]
},
{
"customer":"Jane Doe",
"order_id":"ghi-69875",
"items":[
{
"item_id":"81516886-kfoaen",
"quantity":2
},
{
"item_id":"68946852-oasbsb",
"quantity":4
}
]
}
]
}
Vous pouvez utiliser la clause GROUP BY pour grouper les résultats par customer et utiliser la clause GROUP AS pour créer un tableau d'éléments customer_orders, qui contiendra toutes les commandes d'un·e même client·e. Vous pouvez ensuite référencer des objets de ce tableau dans la requête.
FROM orders
GROUP BY customer
GROUP AS customer_orders
SELECT {
customer_orders
}
Cette requête retourne le résultat suivant :
[
{
"customer_orders": [
{
"customer": "Jane Doe",
"order_id": "def-12345",
"items": [
{
"item_id": "97516848-kftesn",
"quantity": 3
},
{
"item_id": "96946848-metasb",
"quantity": 1
}
]
},
{
"customer": "Jane Doe",
"order_id": "ghi-69875",
"items": [
{
"item_id": "81516886-kfoaen",
"quantity": 2
},
{
"item_id": "68946852-oasbsb",
"quantity": 4
}
]
}
]
},
{
"customer_orders": [
{
"customer": "John Smith",
"order_id": "abc-12345",
"items": [
{
"item_id": "97516848-jiargn",
"quantity": 2
}
]
}
]
}
]