Megosztás a következőn keresztül:


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, a SELECT záradék csak a záradékban szereplő tulajdonságok és rendszerfüggvények részhalmazát GROUP BY tartalmazhatja. Az egyik kivétel az összesítő függvények, amelyek a SELECT záradékban anélkül jelenhetnek meg, hogy belefoglalják őket a GROUP BY záradékba. A záradékban SELECT mindig szerepelhetnek literális értékek.
  • A GROUP BY záradéknak a , FROMés WHERE a SELECTzáradék után és a záradék előtt OFFSET LIMIT kell lennie. Záradékkal ORDER 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)
  • 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.