GROUP BY & HAVING & ORDER BY 간단 정리
어제에 이어 데이터 분석을 위해 알아야 할 쿼리 명령어를 쉽게 간단 정리해보자.
GROUP BY, HAVING, ORDER BY는 "선택 구문"이다.
순서
1. GROUP BY 구
2. HAVING 구
3. ORDER BY 구
4. 가상 연습문제로 이해 체크 (난이도 하)
1. GROUP BY 구
- 데이터를 특정 컬럼 기준으로 그룹화시키는 명령어
EX) 연령별 평균 매출액 → 연령별로 그룹화
- 그룹을 나누고 다시 그 그룹 안에서 세부그룹으로 나눌 수 있다
- GROUP BY COL1, COL2 ⇒ COL1안에서 다시 COL2로 나누기 가능
EX) 연령별 성별 평균 매출액 → 연령별로 먼저 그룹, 다음 성별로 그룹
- GROUP BY COL1, COL2 ⇒ COL1안에서 다시 COL2로 나누기 가능
- 각 그룹에 대한 연산 결과(합, 평균, 갯수 등)를 산출하기 위해서는 집계함수가 필요
- GROUP BY 구에 있는 컬럼은 반드시 SELECT 절에도 존재해야 한다
- GROUP BY 구에도 다양한 함수 사용 가능하다 (SUBSTR, INSTR 등등..)
📌 그룹함수
- 하나 이상의 행을 그룹으로 묶어 연산하기 위한 함수
- GROUP BY 기준으로 나눠진 각 그룹을 연산하는 역할
- COUNT 함수를 제외한 나머지 그룹함수는 NULL 값 제외하고 계산! (COUNT는 NULL을 포함)
함수종류 | 정의 | 참고 |
---|---|---|
COUNT | '행'의 개수 | 데이터 NULL인 경우도 COUNT |
SUM | 합계 | NULL 값 제외하고 연산 |
AVG | 평균 | NULL 값 제외하고 연산. BUT, NULL값 포함해 평균 계산하고 싶다면 NULL을 0으로 채워줘야 함 |
MAX | 최댓값 | NULL 값 제외하고 연산 |
MIN | 최솟값 | NULL 값 제외하고 연산 |
STDDEV | 표준편차 | NULL 값 제외하고 연산 |
VARIANCE | 분산 | NULL 값 제외하고 연산 |
2. HAVING 구
- GROUP BY 절에 대한 조건을 걸고 싶을 때 사용하는 명령어
- 그룹화 된 결과에 조건을 걸어주는 역할
- HAVING 뒤에는 SELECT 구문에서 사용하는 AS 별칭 사용 불가
⭐ WHERE절과 헷갈리지 않게 조심하기 ⭐
- 처음부터 테이블 자체에 조건을 걸고 싶다면? → WHERE 절
- 그룹별로 묶인 컬럼에 조건을 걸고 싶다면? → HAVING 절
3. ORDER BY
- 테이블을 특정 컬럼값을 기준으로 정렬하기 위한 명령어
- 즉, '정렬'의 역할
- 여러개 컬럼을 기준으로 정렬 가능
ex) ORDER BY COL1, COL2...
- 기본 정렬값은 ASC(오름차순)로 설정되어있으므로 오름차순 정렬시에는 입력 필요 X, 내림차순의 경우 DESC
- SELECT절의 컬럼 순서 혹은 별칭으로도 정렬 가능
ex) ORDER BY 1, 2,...
4. 연습문제로 이해 체크!
Q. ORDERS라는 테이블에서 2021년의 데이터만 추려내어 각 월의 카테고리별 주문금액이 10000원 이상인 경우를 찾아 월, 카테고리, 총주문금액을 산출하고 날짜별로 정렬해보아라.
(orders라는 테이블이 있다고 가정)
SELECT MONTH(ORDER_DATE) AS 월, CATEGORY, SUM(UNIT_PRICE) AS 총주문금액
FROM ORDERS
WHERE ORDER_DATE >= '2021-01-01'
GROUP BY MONTH(ORDER_DATE), CATEGORY
HAVING SUM(UNIT_PRICE) >= 10000
ORDER BY 1;
이 정도의 구만 알고 있어도 몇 번 연습하다보면 간단한 분석은 가능하다. 여기서 더해서 이제 sql의 꽃이라고 불리는 join과 서브쿼리 등을 곁들인다면 매우 다양한 분석을 할 수 있다.
그만큼 복잡하기도 하지만 본격적이라 개인적으로 공부하면서 재미를 느꼈었다.
Author And Source
이 문제에 관하여(GROUP BY & HAVING & ORDER BY 간단 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@genieee/GROUP-BY-HAVING-ORDER-BY-간단-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)