Vue d’ensemble
La clause GROUP BY vous permet de spécifier l'ensemble des clés de regroupement à utiliser lors du regroupement sur la table finale.
<return statement> ::=
"RETURN" [ "DISTINCT" ] { <"*"> | <return item list> }
[ <group by clause> ]
<group by clause> ::= "GROUP BY" <grouping key list>
<grouping key list> ::=
<grouping key> [ { "," <grouping key> }... ]
<grouping key> ::= <binding variable>
Détails
- Chaque clé de regroupement doit être une variable liée. Si la clé de regroupement souhaitée n'est pas déjà une variable liée existante, vous avez deux options :
- Renommer en utilisant
AS: Si la clé de regroupement fait partie de la table de résultat finale, vous pouvez renommer la colonne correspondante en utilisant le mot-cléAS. - Utiliser
LET: Alternativement, vous pouvez utiliser l'instructionLETpour définir une nouvelle variable pour la clé de regroupement avant l'instructionRETURN, en vous assurant qu'elle est disponible pour le regroupement.
- Renommer en utilisant
- Après le regroupement, un seul enregistrement par groupe sera retourné.
- Lorsqu'un regroupement est impliqué, toute opération d'agrégation dans l'instruction
RETURNest appliquée à chaque groupe après que le regroupement soit effectué.
Exemple de Graph
Les exemples suivants s'exécutent contre ce graph :

Pour créer ce graph, exécutez la requête suivante contre un graph vide :
INSERT (alex:Student {_id: 's1', name: 'Alex', gender: 'male'}),
(susan:Student {_id: 's2', name: 'Susan', gender: 'female'}),
(alex2:Student {_id: 's3', name: 'Alex', gender: 'female'}),
(art:Course {_id: 'c1', name: 'Art', credit: 13}),
(literature:Course {_id: 'c2', name: 'Literature', credit: 15}),
(alex)-[:Take {year: 2024, term: 'Spring'}]->(art),
(alex2)-[:Take {year: 2023, term: 'Fall'}]->(art),
(susan)-[:Take {year: 2023, term: 'Fall'}]->(art),
(susan)-[:Take {year: 2023, term: 'Spring'}]->(literature)
Regroupement par une Clé
MATCH (:Student)->(c:Course)
RETURN c GROUP BY c
Résultat: c
| _id | _uuid | schema | values |
|---|---|---|---|
| c1 | Sys-gen | Course | {name: "Art", credit: 13} |
| c2 | Sys-gen | Course | {name: "Literature", credit: 15} |
Regroupement par Alias de Colonne
Dans cette requête, la clé de regroupement Name est l'alias de colonne de n.name :
MATCH (n:Student)
RETURN n.name AS Name GROUP BY Name
Résultat:
| Name |
|---|
| Alex |
| Susan |
La requête suivante génère une erreur de syntaxe car la clé de regroupement n.name n'est pas une variable liée :
MATCH (n:Student)
RETURN n.name GROUP BY n.name
Regroupement par Variables Définies par LET
Dans cette requête, la clé de regroupement Gender est définie par l'instruction LET:
MATCH (n:Student)
LET Gender = n.gender
RETURN n GROUP BY Gender
Résultat:
| n |
|---|
| (:Student {_id: "s1", gender: "male", name: "Alex"}) |
| (:Student {_id: "s3", gender: "female", name: "Alex"}) |
La requête suivante génère une erreur de syntaxe car la clé de regroupement n.gender n'est pas une variable liée :
MATCH (n:Student)
RETURN n GROUP BY n.gender
Regroupement avec Agrégation
MATCH (n:Student)
RETURN n.name AS Name, count(n) GROUP BY Name
Résultat:
| Name | count(n) |
|---|---|
| Alex | 2 |
| Susan | 1 |
Regroupement par Plusieurs Clés
MATCH ({_id: "c1"})<-[e:Take]-()
RETURN e.year AS Y, e.term AS T GROUP BY Y, T
Résultat:
| Year | Term |
|---|---|
| 2023 | Fall |
| 2024 | Spring |