SQL 집계 함수의 HAVING 절

SQL 집계 함수의 HAVING 절

이 자습서에서는 SQL 집계 함수에서 HAVING 절을 사용하거나 실행할 수 있는 몇 가지 방법에 대해 설명합니다 . SQL 집계 함수에서 이 절을 사용하면 데이터 요약에 큰 도움이 됩니다.

HAVING 절은 WHERE 문과 거의 유사하며 함께 실행될 수도 있습니다.

이 자습서를 진행하면서 예제를 제공하여 상관관계와 차이점에 대해 논의할 것입니다.

목차

SQL의 GROUP BY 및 WHERE 문

첫 번째 예에서는 아래 샘플 테이블을 사용하여 WHERE 절GROUP BY를 실행하는 방법에 대해 설명합니다 . 집계 함수 단독으로는 사용할 수 없고 기존 열에만 WHERE 절을 사용할 수 있습니다.

SQL 집계 함수의 HAVING 절

값이 2 보다 큰 SaleAmount 열을 기반으로 제품의 총 판매액을 가져오려고 한다고 가정해 보겠습니다 . 결과를 얻으려면 명령이 다음과 같아야 합니다.

SQL 집계 함수의 HAVING 절

먼저 ProductName을 선택 하고 SaleAmount를 집계하여 TotalSales를 얻습니다

SQL 집계 함수의 HAVING 절

그런 다음 SaleAmount가 2 보다 큰 제품만 가져오려고 하므로 여기에서는 WHERE 문을 사용했습니다. 'GROUP BY ProductName' 명령은 ProductName 열 아래의 행을 하나로 그룹화함을 나타냅니다.

일련의 명령 을 실행 하면 ProductNameSaleAmount 열 아래의 모든 데이터 중에서 Bulb 및 Fan 만 표시되었음을 확인할 수 있습니다. SaleAmount가 2 보다 큰 유일한 회사였기 때문입니다 .

SQL 집계 함수의 HAVING 절

이 예에서 WHERE 문은 기존 열인 SaleAmount 로 결과를 필터링하기 위한 것 입니다 . 또한 WHERE 문은 GROUP BY 앞에 나타나며 집계 함수를 필터링하는 데 사용할 수 없습니다. 반면 HAVING 절은 GROUP BY 뒤에 나타나며 집계 함수 기반 필터링에 사용됩니다. 

SQL의 GROUP BY 및 HAVING 절

이 예에서는 WHERE 문과 HAVING 절의 차이점을 보여드리겠습니다 . 결과를 비교하고 평가할 수 있도록 이전 예에서와 동일한 목표를 사용합니다. 

먼저 아래 명령을 사용하여 총 판매량과 함께 제품을 표시해 보겠습니다. 보시다시피 첫 번째 명령은 여전히 ​​WHERE 문을 실행하는 첫 번째 명령과 동일합니다.

SQL 집계 함수의 HAVING 절

처음 두 명령을 실행하면 다음과 같은 결과가 나타납니다.

SQL 집계 함수의 HAVING 절

이제 총 판매량이 5개 이상인 제품만 표시하고 싶다고 가정해 보겠습니다. WHERE  문은 기존 열에만 사용할 수 있으므로 사용할 수 없습니다. 따라서 집계 함수에서 필터링할 것이므로  HAVING 절을 사용해야 합니다 .

SQL 집계 함수의 HAVING 절

GROUP BY 이전에 사용된 WHERE 문과 달리 GROUP BY 이후에 HAVING 절을 사용하는 방법에 유의하십시오 . 이는 SQL이 HAVING 절을 평가하기 전에 레코드를 그룹화하기 때문입니다. 

그런 다음 HAVING SUM(SaleAmount)>5 와 함께 해당 명령을 실행해 보겠습니다 . 총 가격이 5 보다 큰 제품만 가져오도록 지정하면 현재 결과 테이블에서 펜이 더 이상 표시되지 않음을 알 수 있습니다 . 합계가 5 미만이기 때문입니다 . 

SQL 집계 함수의 HAVING 절

간단히 말해서 기존 열을 기반으로 테이블에서 데이터를 필터링하려는 경우 WHERE 절을 사용 하는 반면 집계 함수에서 데이터를 필터링하려는 경우 HAVING 절을 사용합니다 . 

SSMS(SQL Server Management Studio)의 HAVING 및 WHERE 절

이제 SSMS( SQL Server Management Studio ) 에서 HAVING 절을 실행할 수 있는 방법을 논의하고 시연하여 진행하겠습니다 . 또한 예제를 제공하여 HAVING 절WHERE 절의 차이점을 다룰 것입니다 .

아래는 샘플 데이터 SalesOrderHeader입니다. 이 데이터는 100개의 행으로 구성됩니다. 이 예에서는 TotalSale이 10000 보다 큰 CustomerID TotalSale 가져오려고 합니다 . 총 판매액은 TotalDue 열 값 의 합계를 기준으로 합니다 .

SQL 집계 함수의 HAVING 절

먼저 위의 예를 기반으로 집계 함수를 필터링하려고 할 때  WHERE 절을 사용할 수 없는 이유를 설명하겠습니다 .

아래 이미지의 샘플 명령 세트를 사용할 것입니다. 보시다시피 기술적으로 첫 번째 예에서 사용한 것과 동일한 명령 세트가 있습니다.

그러나 집계 함수를 필터링할 때 WHERE 절을 단독 으로 사용할 수 없기 때문에 왼쪽 상단 모서리에 있는 실행을 클릭하면 오류가 발생합니다.

SQL 집계 함수의 HAVING 절

오류를 수정하려면 WHERE 절 대신 HAVING 절을 사용하여 결과를 필터링해야 합니다 . 새로운 명령 세트는 아래 이미지와 유사해야 합니다.

SQL 집계 함수의 HAVING 절

이제 오류가 수정되었으며 TotalSale10000 보다 큰 CustomerID 당 결과가 포함된 것을 볼 수 있습니다 .

다시 말하지만 WHERE 절은 항상 GROUP BY 절 앞에 사용되는 반면 HAVING 절은 항상 GROUP BY 절 뒤에 사용됩니다 .

SQL에서 HAVING 절과 WHERE 절 모두 사용  

이 예에서는 WHEREHAVING 절을 동시에 사용하려고 한다고 가정해 보겠습니다 . TotalSale이 10000 보다 크지만 TerritoryID가 1 인 고객에 대해서만 CustomerID 별로 TotalSale 가져오도록 합시다 . 

TerritoryID 가 1인 고객으로 결과를 필터링하려고 하므로 WHERE 절을 사용합니다 . 따라서 우리의 명령은 이전 명령과 같아야 합니다. 다시 한 번 GROUP BY 절 앞에 WHERE 절을 추가했습니다 .

SQL 집계 함수의 HAVING 절

지금은 이전 결과와 이 새로운 결과 간에 큰 차이를 볼 수 없습니다. 그러나 오른쪽 하단 모서리를 자세히 살펴보면 이전 데이터 행 505 개에 비해 이제 64개 행만 있습니다. 결과가 TerritoryID를 기준으로 필터링되기 때문입니다 .

결론

요약하면 WHERE 절은 기존 열에만 사용할 수 있습니다. 집계 함수로 필터링해야 하는 경우 HAVING 절을 대신 사용해야 합니다 .

SQL 집계 함수에서 HAVING 절을 사용 하고 HAVING 절과 WHERE 절을 함께 실행하는 방법을 연습하면 대량의 데이터나 레코드를 작업할 때 사용자에게 편리함을 제공할 수 있습니다. 

SQL 집계 함수에서 HAVING 절을 사용하는 방법에 대한 충분한 정보와 이해를 제공했기를 바랍니다 . 이 주제 및 기타 관련 콘텐츠에 대해 더 알고 싶다면 아래 관련 링크 목록을 확인하십시오.

모두 제일 좋다,

하피즈


파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

R에서 RDS 파일을 저장하고 로드하는 방법

R에서 RDS 파일을 저장하고 로드하는 방법

R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.

LuckyTemplates의 컨텍스트 필터링 소개

LuckyTemplates의 컨텍스트 필터링 소개

이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.

LuckyTemplates를 사용한 비즈니스 보고

LuckyTemplates를 사용한 비즈니스 보고

지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것