GROUP BY (NoSQL sorgusu)
ŞUNUN IÇIN GEÇERLIDIR: NoSQL
GROUP BY
yan tümcesi, sorgunun sonuçlarını belirtilen bir veya daha fazla özelliğin değerlerine göre böler.
Söz dizimi
<group_by_clause> ::= GROUP BY <scalar_expression_list>
<scalar_expression_list> ::=
<scalar_expression>
| <scalar_expression_list>, <scalar_expression>
Bağımsız değişkenler
Description | |
---|---|
<scalar_expression_list> |
Sorgu sonuçlarını gruplandırmak (veya bölmek) için kullanılan ifadeleri belirtir. |
<scalar_expression> |
Skaler alt sorgular ve skaler toplamalar dışında herhangi bir skaler ifadeye izin verilir. Her skaler ifade en az bir özellik başvurusu içermelidir. Tek tek ifade sayısı veya her ifadenin kardinalitesi için bir sınır yoktur. |
Örnekler
Bu bölümdeki örnekler için bu öğe başvuru kümesi kullanılır. Her öğe, ve mediaTrained
özelliklerini içerebilen softwareDevelopment
bir capabilities
nesne içerir.
[
{
"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"
}
]
Bu ilk örnekte, GROUP BY
belirtilen özelliğin değerini kullanarak öğe grupları oluşturmak için yan tümcesi kullanılır.
SELECT
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{
"developmentLang": "python"
},
{
"developmentLang": "javascript"
},
{
"developmentLang": "c-sharp"
},
{}
]
Bu sonraki örnekte, grup başına toplam öğe sayısını sağlamak için gruplandırmalarla birlikte bir toplama sistem işlevi (COUNT
) kullanılır.
SELECT
COUNT(1) AS trainedEmployees,
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{
"trainedEmployees": 2,
"developmentLang": "python"
},
{
"trainedEmployees": 3,
"developmentLang": "javascript"
},
{
"trainedEmployees": 1,
"developmentLang": "c-sharp"
},
{
"trainedEmployees": 1
}
]
Bu son örnekte, öğeler birden çok özellik kullanılarak gruplandırılır.
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
}
]
Açıklamalar
- Sorgu bir
GROUP BY
yan tümcesi kullandığındaSELECT
, yan tümcesi yalnızca yan tümcesine dahil edilen özelliklerin ve sistem işlevlerininGROUP BY
alt kümesini içerebilir. Bir özel durum, yan tümcesineSELECT
dahilGROUP BY
edilmeden yan tümcesinde görünebilen toplama işlevleridir. Yan tümcesineSELECT
her zaman değişmez değerleri de ekleyebilirsiniz. - Yan
GROUP BY
tümcesi , veFROM
WHERE
yan tümcesininSELECT
ardından ve yan tümcedenOFFSET LIMIT
önce olmalıdır. Yan tümcesi ileORDER BY
kullanamazsınızGROUP BY
. GROUP BY
yan tümcesi aşağıdaki özelliklerden, özelliklerden veya işlevlerden herhangi birine izin vermez:- Diğer ad özellikleri veya diğer ad sistem işlevleri (yan tümcesinde
SELECT
diğer ad kullanmaya izin verilir) - Alt Sorgular
- Sistem işlevlerini toplama (bu işlevlere yalnızca yan tümcesinde
SELECT
izin verilir)
- Diğer ad özellikleri veya diğer ad sistem işlevleri (yan tümcesinde
- Toplama sistem işlevi ve alt sorgusu olan
GROUP BY
sorgular desteklenmez. - Bölümler
GROUP BY
arası sorguların en fazla 21 toplam sistem işlevi olabilir.