JangGeonWu
janggeonwu97
JangGeonWu
전체 방문자
오늘
어제
  • 분류 전체보기 (78)
    • SQLD (21)
    • 개인 공부용 (17)
    • Django (9)
    • Tableau (6)
    • ElasticSearch (8)
    • 빅데이터 엔지니어 (5)
    • Spring 퀵 스타트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개인 공부 기록용 블로그

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
JangGeonWu

janggeonwu97

SQLD

2-1-5. GROUP BY, HAVING 절

2022. 9. 20. 14:23

1. 집계함수

 - 여러 행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수

 - GROUP BY 절은 행들을 '소그룹화'한다.

 - SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다.

 

집계함수는 그룹에 대한 정보를 제공하므로, 주로 '숫자 유형'에 사용되지만, MAX-MIN-COUNT 함수는 문자/날짜 유형에도 적용이 가능하다.

 

집계함수의 종류는 아래와 같다.

집계함수 사용 목적
COUNT(*) NULL 값을 포함한 행의 수를 출력한다.
COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행 수를 출력한다.
SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력한다.
AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력한다.
MAX([DISTINCT | ALL] 표현식) 표현식의 최댓값을 출력. 문자, 날짜 데이터 타입도 사용 가능
MIN([DISTINCT | ALL] 표현식) 표현식의 최소값을 출력. 문자, 날짜 데이터 타입도 사용 가능
STDDEV([DISTINCT | ALL] 표현식) 표현식의 표준 편차를 출력
VARIANCE/VAR([DISTINCT | ALL] 표현식) 표현식의 분산 출력
기타 통계 함수 벤더별로 다양한 통계식을 제공

 

2. GROUP BY 절

 - SQL문에서 FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류해 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다.

더보기

SELECT [DISTINCT] 칼럼명 [ALIAS 명]

FROM 테이블명

[WHERE 조건식]

[GROUP BY 칼럼 or 표현식]

[HAVING 그룹조건식];

 

사용 예시는 아래와 같다.

SELECT POS AS 포지션, COUNT (*) AS 인원수, COUNT(HEIGHT) AS 키대상, 
			MAX(HEIGHT) AS 최대키, MIN(HEIGHT) AS 최소키, ROUND(AVG(HEIGHT), 2) AS 평균키
       FROM PLAYER
GROUP BY POS;

 

3. HAVING 절

 - WHERE 절은 FROM 절에 정의된 집합의 개별 행에 WHERE절의 조건절이 먼저 적용되고, 조건에 맞는 행이 GROUP BY 절의 대상이 된다.

 이 다음 결과 집합의 행에 HAVING 조건절이 적용된다. 단, HAVING 절은 '결과 집합의 행'에 조건이 적용된다는 점에 유의하자.

 

SELECT POS AS 포지션, AVG(HEIGHT) AS 평균키
	FROM PLAYER
GROUP BY POS
	HAVING AVG(HEIGHT)>=180;

 

GROUP BY절과 HAVING 절의 순서가 바뀌면 ORACLE에서는 문제가 안되나, SQL Server에서는 문법오류가 발생하니 유의할 것.

 

4. 집계함수와 NULL 처리

 - 집계함수는 NULL을 알아서 처리하는데, 괜히 NVL/ISNULL 써서 NULL을 억지로 수정하면 나중에 문제가 발생한다.

 - 리포트 출력 때 NULL이 아닌 0을 표시하고 싶을 경우에는 NVL(SUM(SAL), 0)이나, ISNULL(SUM(SAL),0)처럼 전체 SUM의 결과가 NULL인 경우에만 한번 NVL, ISNULL 함수를 사용하면 된다.

 

 

 

 

 

 

 

 

 

 

'SQLD' 카테고리의 다른 글

2-1-7. 조인  (1) 2022.09.20
2-1-6. ORDER BY 절  (1) 2022.09.20
2-1-4. WHERE 절  (0) 2022.09.20
2-1-3. 함수  (0) 2022.09.20
2-1-2. SELECT 문  (0) 2022.09.20
    'SQLD' 카테고리의 다른 글
    • 2-1-7. 조인
    • 2-1-6. ORDER BY 절
    • 2-1-4. WHERE 절
    • 2-1-3. 함수
    JangGeonWu
    JangGeonWu

    티스토리툴바