예를 들어 이 쿼리는 국가, 지역 및 판매에 대한 열이 있는 Sales 테이블을 만듭니다. 4개의 행을 삽입하고 두 행에는 국가 및 지역에 대한 일치하는 값이 있습니다. 열 순서는 ROLLUP 출력에 영향을 미치며 결과 집합의 행 수에 영향을 줄 수 있습니다. WHERE 절이 열에 조건을 배치하는 데 사용된다는 것을 알고 있지만 그룹에 조건을 배치하려면 어떻게해야합니까? GROUP BY 절을 포함하는 쿼리를 그룹화 된 쿼리라고 하며 그룹화 된 모든 항목에 대해 단일 행만 반환합니다. 그룹 집합은 명시적 그룹화 집합 목록의 일부가 아닌 경우 GROUP BY 절에서 허용되지 않습니다. 예를 들어, 그룹 별 열1, (열2, … ColumnN)은 표준에서 허용되지만 거래-SQL에서는 허용되지 않습니다. Transact-SQL은 그룹 BY C1, 그룹화 세트를 지원합니다((열2, … ColumnN)) 및 그룹 별 열1, 열2, …
columnN은 의미하는 것과 동일합니다. 이는 이전 그룹 BY 예제와 동일한 예입니다. 이는 GROUP BY Column1(Column2, … ColumnN)은 그룹 by C1, 그룹화 세트((열2, … columnN))))))))을 참조적으로 동일하지 않습니다. 출력에서 명확하게 볼 수 있듯이 ID를 가진 고객은 2016년에 1건, 2018년에는 2개의 주문을 했습니다. ID 2를 가진 고객은 2017년에 2개의 주문을, 2018년에 는 1개의 주문을 했습니다. 이 예제에서 GROUP BY 절은 고객을 도시별로 그룹화하고 COUNT() 함수는 각 도시의 고객 수를 반환합니다. 이것이 데이터베이스의 데이터를 요약하는 것입니다. 그룹화 집합은 그룹화 집합 내에서 허용되지 않습니다. 예를 들어 집합그룹별 그룹화(A1, A2,…
An, 그룹화 세트 (C1, C2, … Cn)))은 SQL-2006 표준에서 허용되지만 Transact-SQL에서는 허용되지 않습니다. Transact-SQL은 집합(A1, A2,… 그룹별로 그룹화할 수 있도록 합니다. An, C1, C2, … Cn) 또는 그룹별 그룹 집합(A1), (A2), … (안), (C1), (C2), … (Cn))) 첫 번째 GROUP BY 예제와 동일하고 보다 명확한 구문이 있는. 성별에 대한 고유한 값을 얻고 싶다고 가정해 보겠습니다. 다음 쿼리를 사용할 수 있습니다 – 이 예제에서는 DISTRIBUTED_AGG 쿼리 힌트를 사용하여 어플라이언스가 집계를 수행하기 전에 CustomerKey 열의 테이블을 섞도록 합니다. 국가 및 지역에 대한 3개의 값 조합이 있기 때문에 쿼리 결과에는 3개의 행이 있습니다.
캐나다와 브리티시 컬럼비아의 TotalSales는 두 행의 합계입니다. 이것이 HAVING 절이 사용되는 곳입니다. HAVING 절을 사용하여 최종 결과 집합의 일부가 될 그룹을 결정하는 조건을 배치할 수 있습니다. 또한 WHERE 절과 함께 SUM(), COUNT() 등과 같은 집계 함수를 사용할 수 없습니다. 따라서 조건에서 이러한 함수를 사용하려면 HAVING 절을 사용해야 합니다. 쿼리 결과를 행 그룹으로 나누는 SELECT 문 절은 일반적으로 각 그룹에 대해 하나 이상의 집계를 수행하기 위한 것입니다. SELECT 문은 그룹당 하나의 행을 반환합니다. 다음 쿼리는 국가 및 지역을 그룹화하고 각 값 조합에 대한 집계 합계를 반환합니다. 범주 ID가 동일하지만 릴리스된 연도가 다른 경우 행은 고유한 로 처리됩니다. 범주 ID와 릴리스된 연도가 두 개 이상의 행에 대해 동일한 경우 중복으로 간주되고 하나의 행만 표시됩니다. 다음 예제는 여러 그룹 BY 기준을 사용하여 결과를 그룹화합니다.
각 OrderDateKey 그룹 내에서 DueDateKey로 구분할 수 있는 하위 그룹이 있는 경우 결과 집합에 대해 새 그룹이 정의됩니다. 데이터베이스에서 총 수의 남성과 여성을 원한다고 가정해 보겠습니다. 아래 표시된 다음 스크립트를 사용하여 수행할 수 있습니다. 이제 GROUP By 절이 무엇인지 알아 보았으니 쿼리별로 기본 그룹에 대한 구문을 살펴보겠습니다. . 그룹 BY [ALL/DISTINCT]는 열 식이 포함된 간단한 GROUP BY 절에서만 허용됩니다. 그룹화 세트, 롤업, 큐브, 큐브 또는 롤업 구문에서는 허용되지 않습니다. ALL은 기본값이며 암시적입니다.