[MSSQL] GROUP BY, HAVING, DISTINCT절 사용하기

GROUP BY절이란?

테이블 SELECT시 조회 결과를 그룹으로 묶어서 그 결과를 가져오는 역할을 한다.

 

DISTINCT절이란?

DISTINCT는 GROUP BY절과 마찬가지로 조회결과를 그룹으로 묶어서 그 결과를 가져온다.

주로 UNIQUE한 컬럼을 조회할 경우 사용되는 구절이다.

 

GROUP BY절과 DISTINCT의 차이점

두 구절은 똑같이 그룹을 지어준다는것에 대해 공통점이 있다.

하지만 두 구절의 차이는 GROUP BY는 결과물을 정렬해서 표현하고

DISTINCT는 결과물을 정렬하지 않는다.

즉 정렬이 필요하다면 GROUP BY절을 사용하면 되고 그것이 아니라면 DISTINCT절을 사용하면 된다.

정렬이 필요하지않다면 DISTINCT절을 사용하는것이 속도면에서 GROUP BY절보다 빠르다.

 

문법  

--GROUP BY
SELECT칼럼 FROM 테이블 GROUP BY 칼럼명

--DISTINCT
SELECT DISTINCT 칼럼명 FROM 테이블명

 

예제

1. 테이블(MY_TABLE)에 나이(AGE)로 그룹을 지어 조회

--GROUP BY
SELECT AGE FROM MY_TABLE GROUP BY AGE

--DISTINCT
SELECT DISTINCT AGE FROM MY_TABLE

 

2. 테이블(MY_TABLE)에 판매번호(NUM)별 AS평균단가(UM), AS최고단가, AS최저단가, AS합계단가 조회

--GROUP BY
SELECT NUM,AVG(UM)AS평균단가, MAX(UM)AS최고단가, MIN(UM)AS최소단가, SUM(UM)AS합계단가 FROM MY_TABLE GROUP BY NUM

--DISTINCT
SELECT DISTINCT NUM,AVG(UM)AS평균단가, MAX(UM)AS최고단가 MIN(UM)AS최소단가,SUM(UM)AS합계단가 FROM MY_TABLE

※ HAVING : GROUP BY 절에는 조건문을 HAVING으로 준다.

 

3. 테이블(MY_TABLE)에 나이(AGE)가 35살 이상인 사람으로 그룹을 지어 조회

SELECT AGE FROM MY_TABLE GROUP BY AGE WHERE HAVING AGE>=35

 

4. 테이블(MY_TABLE)에 거래처(PARTNER)별 등록된 거래처(AS 거래처)의수 조회(단 등록된 거래처가 10개 이상인 거래처만 조회)

SELECT PARTNER, COUNT(*) AS거래처수 FROM MY_TABLE GROUP BY PARTNER HAVING

 

[MS_SQL] 별칭(ALIAS) 사용법 & 예제

[MS_SQL] 집계함수(COUNT,AVG,MAX,MIN,SUM) 사용법 & 예제

[MS_SQL] JOIN의 종류설명 및 사용법 & 예제

[MS_SQL] Union,UnionAll 사용법 & 예제

[MS_SQL] 서브쿼리(SubQuery) 사용법 & 예제

 

댓글

Designed by JB FACTORY