GROUP BY(NoSQL 쿼리)
적용 대상: NoSQL
GROUP BY
절은 하나 이상의 지정된 속성 값에 따라 쿼리의 결과를 나눕니다.
구문
<group_by_clause> ::= GROUP BY <scalar_expression_list>
<scalar_expression_list> ::=
<scalar_expression>
| <scalar_expression_list>, <scalar_expression>
인수
설명 | |
---|---|
<scalar_expression_list> |
쿼리 결과를 그룹화(또는 나누기)하는 데 사용되는 식을 지정합니다. |
<scalar_expression> |
스칼라 하위 쿼리 및 스칼라 집계를 제외한 모든 스칼라 식이 허용됩니다. 각 스칼라 식에는 적어도 하나 이상의 속성 참조가 포함되어야 합니다. 개별 식의 수나 각 식의 카디널리티에는 제한이 없습니다. |
예제
이 섹션의 예제에서는 이 참조 항목 집합이 사용됩니다. 각 항목에는 softwareDevelopment
및 mediaTrained
속성을 포함할 수 있는 capabilities
개체가 포함됩니다.
[
{
"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"
}
]
이 첫 번째 예제에서 GROUP BY
절은 지정된 속성의 값을 사용하여 항목 그룹을 만드는 데 사용됩니다.
SELECT
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{},
{
"developmentLang": "c-sharp"
},
{
"developmentLang": "javascript"
},
{
"developmentLang": "python"
}
]
다음 예제에서는 그룹화와 함께 집계 시스템 함수(COUNT
)를 사용하여 그룹당 총 항목 수를 제공합니다.
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"
}
]
이 마지막 예제에서 항목은 여러 속성을 사용하여 그룹화됩니다.
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
}
]
설명
- 쿼리에서
GROUP BY
절을 사용하는 경우SELECT
절은GROUP BY
절에 포함된 속성 및 시스템 함수의 하위 집합만 포함할 수 있습니다. 한 가지 예외는 집계 함수이며, 이는GROUP BY
절에 포함되지 않고SELECT
절에 나타날 수 있습니다.SELECT
절에는 항상 리터럴 값을 포함할 수도 있습니다. GROUP BY
절은SELECT
,FROM
및WHERE
절 뒤에 있고OFFSET LIMIT
절 앞에 있어야 합니다.ORDER BY
절에는GROUP BY
를 사용할 수 없습니다.- 절은
GROUP BY
다음 기능, 속성 또는 함수를 허용하지 않습니다.- 속성 별칭 지정 또는 시스템 함수 별칭 지정(
SELECT
절 내의 별칭 지정은 계속 허용됨) - 하위 쿼리
- 집계 시스템 함수(이러한 함수는
SELECT
절에서만 허용됨)
- 속성 별칭 지정 또는 시스템 함수 별칭 지정(
- 집계 시스템 함수를 사용하는 쿼리와
GROUP BY
를 사용하는 하위 쿼리는 지원되지 않습니다. - 파티션 간
GROUP BY
쿼리는 최대 21개의 집계 시스템 함수를 포함할 수 있습니다.