[MSSQL] GROUP BY, HAVING, DISTINCT절 사용하기
- DB/MSSQL
- 2018. 2. 8.
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] 집계함수(COUNT,AVG,MAX,MIN,SUM) 사용법 & 예제
[MS_SQL] JOIN의 종류설명 및 사용법 & 예제
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] Union,UnionAll 사용법 & 예제 (2) | 2018.02.13 |
---|---|
[MSSQL] JOIN의 종류설명 및 사용법 & 예제 (6) | 2018.02.12 |
[MSSQL] 집계함수(COUNT,AVG,MAX,MIN,SUM) 사용법 & 예제 (0) | 2018.02.07 |
[MSSQL] 별칭(ALIAS) 사용법 & 예제 (0) | 2018.02.06 |