GROUP BY (NoSQL sorgusu)
UYGULANANLAR: 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
Açıklama | |
---|---|
<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 ile ilgili 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
özellikleri 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, belirtilen özelliğin GROUP BY
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": "c-sharp"
},
{
"developmentLang": "javascript"
},
{
"developmentLang": "python"
}
]
Bu sonraki örnekte, grup başına toplam öğe sayısını sağlamak için gruplandırmalarla birlikte bir toplama sistemi 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": 1
},
{
"trainedEmployees": 1,
"developmentLang": "c-sharp"
},
{
"trainedEmployees": 3,
"developmentLang": "javascript"
},
{
"trainedEmployees": 2,
"developmentLang": "python"
}
]
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ğerler de ekleyebilirsiniz. - Yan
GROUP BY
tümcesi ,FROM
veWHERE
yan tümcesininSELECT
ardından ve yan tümcedenOFFSET LIMIT
önce olmalıdır. YanORDER BY
tümcesi ile 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 sistemi işlevleri (yan tümce içinde
SELECT
diğer ad kullanmaya izin verilir) - Alt Sorgular
- Toplama sistem işlevleri (bu işlevlere yalnızca yan tümcesinde
SELECT
izin verilir)
- Diğer ad özellikleri veya diğer ad sistemi işlevleri (yan tümce içinde
- Toplama sistem işlevi ve alt sorgusu olan
GROUP BY
sorgular desteklenmez. - Bölümler arası
GROUP BY
sorguların en fazla 21 toplam sistem işlevi olabilir.