GROUP BY와 HAVING 명령문

완료됨

SQL에서는 더 심층적인 인사이트를 얻고 데이터베이스 내에서 데이터를 더 잘 구성하기 위해 강력한 GROUP BY 절과 HAVING 절을 도입합니다.

이러한 도구를 사용하면 행을 분류하고 집계 함수를 적용하여 원시 데이터를 의미 있는 요약으로 변환할 수 있으므로 추세를 보다 쉽게 분석하거나 패턴을 식별하거나 특정 범주에 맞는 보고서를 생성할 수 있습니다.

GROUP BY (그룹화를 위한 SQL 구문)

범주 또는 그룹별로 데이터를 분석하기 위해 SQL은 절을 GROUP BY 제공합니다. 이 절은 지정된 열의 값에 따라 행을 분류하여 데이터를 하위 집합으로 효과적으로 분할합니다.

실제 성능 GROUP BY 은 집계 함수와 함께 사용될 때 표시됩니다. 각 범주에 대한 요약 통계를 생성하기 위해 COUNT(), SUM(), AVG(), MIN()MAX()와 같은 집계 함수는 이러한 그룹에서 계산을 수행합니다.

예를 들어, GROUP BY를 사용하여 각 제품 범주의 -total 판매 SUM(), 각 공급업체의 -average 제품 가격 AVG(), 그리고 각 도시의 -number 고객 COUNT()을 계산할 수 있습니다.

SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id;

이 쿼리는 테이블 행을 해당 항목에 따라 sales.products그룹화하여 각 범주 내 제품의 category_id 평균 가격을 검색합니다. AVG() 열에 price 함수를 적용하여, 쿼리는 각 고유한 category_id의 모든 제품의 가격 평균을 계산합니다.

GROUP BY 절이 항상 집계 함수와 페어링될 필요는 없습니다. 그룹화된 데이터에 대한 계산을 수행하기 위해 집계 함수와 함께 일반적으로 사용되지만 열 GROUP BY 의 고유한 조합 검색과 같은 다른 용도로 데이터를 그룹으로 구성하는 데도 사용할 수 있습니다.

SELECT category_id
FROM sales.products
GROUP BY category_id;

이 쿼리는 category_id별로 행을 그룹화하고, 집계를 수행하지 않으며 테이블의 각 고유 category_id를 단순히 나열합니다.

가지고 있는

SQL에서는 이 절을 WHERE 사용하여 집계 함수의 결과를 필터링할 수 없습니다.
집계 함수 결과를 기반으로 GROUP BY 절에서 생성된 그룹을 필터링하려면 HAVING 절을 사용합니다.
HAVING 그룹의 절로 WHERE 생각하세요. 집계 함수에서 생성된 요약된 데이터에 조건을 적용하여 분석을 구체화하여 관련 그룹에 집중할 수 있습니다.

SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id
HAVING AVG(price) > 30;

이 쿼리는 price 테이블의 행을 sales.products에 따라 그룹화하여 각 범주 내의 제품의 평균 category_id을 계산합니다. 그런 다음, 평균 price이 30을 초과하는 범주만 포함하도록 결과를 필터링합니다. 이 작업은 HAVING 절을 사용하여 수행됩니다.