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ığı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ğerleri de ekleyebilirsiniz.
  • Yan GROUP BY tümcesi , ve FROMWHERE yan tümcesinin SELECTardından ve yan tümceden OFFSET LIMIT önce olmalıdır. Yan tümcesi ile ORDER 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)
  • 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.