본문 바로가기
🖊️Certificate/📌SQLD

[SQLD] 2과목 - 1장) 5/ 6절. GROUP BY, HAVING 절/ ORDER BY 절

by 빛나고요 2024. 3. 7.
BIG

2과목. SQL 기본 및 활용

1장. SQL 기본

5절. GROUP BY, HAVING 절

 

# GROUP BY 절

- 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식
- GROUP BY 절에 그룹을 지정할 컬럼을 전달(여러 개 전달 가능)
- 만약 그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 행을 제외함(WHERE 절이 GROUP BY 절보다 먼저 수행되므로)
- 그룹에 대한 조건은 WHERE 절에서 사용할 수 없음
- SELECT 절에 집계 함수를 사용하여 그룹연산 결과 표현
- GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음

- 문법
SELECT *  or 컬럼명 or 표현식
FROM 테이블명 or 뷰명
WHERE 조회할 테이블 조건
GROUP BY 그룹핑 컬럼명
HAVING 그풉핑 대상 필터링 조건;

 

# HAVING 절

- 그룹 함수 결과를 조건으로 사용할 때 사용하는 절
- WHERE 절을 사용하여 그룹을 제한할 수 없으므로 HAVING 절에 전달
- HAVING 절이 GROUP BY 절 앞에 올 수는 있지만 뒤에 쓰는 것을 권장
- 내부적 연산 순서가 SELECT 절보다 먼저이므로 SELECT 절에서 선언된 Alias 사용 불가

 

----------------------------------------------------------------------------------------

6절. ORDER BY 절

 

#ORDER BY 절

- 데이터는 입력된 순서대로 출력되나, 출력되는 행의 순서를 사용자가 변경하고자 할 때 ORDER BY 절을 사용
- ORDER BY 뒤에 명시된 컬럼 순서대로 정렬 ➪ 1차 정렬, 2차 정렬 전달 가능
- 정렬 순서를 오름차순(ASC), 내림차순(DESC)으로 전달(생략 시 오름차순 정렬)
- 유일하게 SELECT 절에 정의한 컬럼 별칭 사용 가능
- SELECT 절에 선언된 순서대로의 숫자로도 사용 가능

- 문법
SELECT * or 컬럼명 or 표현식
FROM 테이블명 or 뷰명
WHERE 조회할 데이터 조건
GROUP BY 그룹핑컬럼명
HAVING 그룹핑 대상 필터링 조건
ORDER BY 정렬컬럼명 [ASC | DESC];

- 정렬 순서(오름차순)
  · 한글: 가, 나, 다, 라, …
  · 영어: A, B, C, D, …
  · 숫자: 1, 2, 3, 4, …
  · 날짜: 과거 날짜부터 최근 날짜 순으로 정렬(오래된 순서대로 정렬)

- 복합 정렬
  · 먼저 정렬한 값의 동일한 결과가 있을 경우 추가적으로 정렬 가능 ➪ 1차 정렬한 값이 같은 경우 그 값 안에서 2차 정렬 컬럼값의 정렬이 일어남
ex) … ORDER BY aaaaa DESC, bbbbbb ASC;




댓글