Aracılığıyla paylaş


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ığında SELECT , yan tümcesi yalnızca yan tümcesine dahil edilen özelliklerin ve sistem işlevlerinin GROUP BY alt kümesini içerebilir. Bir özel durum, yan tümcesine SELECT dahil GROUP BY edilmeden yan tümcesinde görünebilen toplama işlevleridir. Yan tümcesine SELECT her zaman değişmez değerler de ekleyebilirsiniz.
  • Yan GROUP BY tümcesi , FROMve WHERE yan tümcesinin SELECTardından ve yan tümceden OFFSET LIMIT önce olmalıdır. Yan ORDER 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)
  • 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.