GROUP BY (NoSQL-lekérdezés)
A KÖVETKEZŐRE VONATKOZIK: NoSQL
A GROUP BY
záradék egy vagy több megadott tulajdonság értéke szerint csoportosítja a lekérdezés eredményeit.
Syntax
<group_by_clause> ::= GROUP BY <scalar_expression_list>
<scalar_expression_list> ::=
<scalar_expression>
| <scalar_expression_list>, <scalar_expression>
Argumentumok
Leírás | |
---|---|
<scalar_expression_list> |
Megadja a lekérdezési eredmények csoportosításához (vagy felosztásához) használt kifejezéseket. |
<scalar_expression> |
Minden skaláris kifejezés engedélyezett, kivéve a skaláris al lekérdezéseket és a skaláris aggregátumokat. Minden skaláris kifejezésnek tartalmaznia kell legalább egy tulajdonsághivatkozást. Nincs korlátozva az egyes kifejezések száma vagy az egyes kifejezések számossága. |
Példák
Az ebben a szakaszban szereplő példák esetében ez a referenciaelem-készlet használatos. Minden elem tartalmaz egy capabilities
objektumot, amely tartalmazhat és mediaTrained
tulajdonságokat is tartalmazhatsoftwareDevelopment
.
[
{
"name": "Jordan Mitchell",
"capabilities": {
"softwareDevelopment": "python",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Mikaela Lee",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": false
},
"team": "Cloud software engineering"
},
{
"name": "Graham Barnes",
"capabilities": {
"softwareDevelopment": "c-sharp",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Hayden Cook",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Morgan Connors",
"capabilities": {
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Devon Torres",
"capabilities": {
"softwareDevelopment": "python",
"mediaTrained": false
},
"team": "Cloud software engineering"
},
{
"name": "Sam Centrell",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": true
},
"team": "Cloud software engineering"
}
]
Ebben az első példában a GROUP BY
záradék egy adott tulajdonság értékével rendelkező elemek csoportjainak létrehozására szolgál.
SELECT
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{},
{
"developmentLang": "c-sharp"
},
{
"developmentLang": "javascript"
},
{
"developmentLang": "python"
}
]
Ebben a következő példában egy aggregátumrendszer-függvényt (COUNT
) használunk a csoportosításokkal a csoportonkénti elemek teljes számának megadásához.
SELECT
COUNT(1) AS trainedEmployees,
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{
"trainedEmployees": 1
},
{
"trainedEmployees": 1,
"developmentLang": "c-sharp"
},
{
"trainedEmployees": 3,
"developmentLang": "javascript"
},
{
"trainedEmployees": 2,
"developmentLang": "python"
}
]
Ebben az utolsó példában az elemek több tulajdonság alapján vannak csoportosítva.
SELECT
COUNT(1) AS employeesWithThisTraining,
e.capabilities.softwareDevelopment AS developmentLang,
e.capabilities.mediaTrained AS mediaReady
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment,
e.capabilities.mediaTrained
[
{
"employeesWithThisTraining": 1,
"developmentLang": "python",
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"developmentLang": "javascript",
"mediaReady": false
},
{
"employeesWithThisTraining": 1,
"developmentLang": "c-sharp",
"mediaReady": true
},
{
"employeesWithThisTraining": 2,
"developmentLang": "javascript",
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"developmentLang": "python",
"mediaReady": false
}
]
Megjegyzések
- Ha egy lekérdezés záradékot
GROUP BY
használ, aSELECT
záradék csak a záradékban szereplő tulajdonságok és rendszerfüggvények részhalmazátGROUP BY
tartalmazhatja. Az egyik kivétel az összesítő függvények, amelyek aSELECT
záradékban anélkül jelenhetnek meg, hogy belefoglalják őket aGROUP BY
záradékba. A záradékbanSELECT
mindig szerepelhetnek literális értékek. - A
GROUP BY
záradéknak a ,FROM
ésWHERE
aSELECT
záradék után és a záradék előttOFFSET LIMIT
kell lennie. ZáradékkalORDER BY
nem használhatóGROUP BY
. - A
GROUP BY
záradék nem engedélyezi az alábbi funkciók, tulajdonságok vagy függvények egyikét sem:- Aliasing properties or aliasing system functions (aliasing is allowed within the
SELECT
clause) - Segédlekérdezések
- Rendszerfüggvények összesítése (ezek a függvények csak a
SELECT
záradékban engedélyezettek)
- Aliasing properties or aliasing system functions (aliasing is allowed within the
- Az aggregátumrendszer-függvényt és al lekérdezést tartalmazó
GROUP BY
lekérdezések nem támogatottak. - A partícióközi
GROUP BY
lekérdezések legfeljebb 21 összesítő rendszerfüggvényt tartalmazhatnak.