[ Index ]
1. ORDER BY
(1) ORDER BY (2) LIMIT (3) DISTINCT
2. GROUP BY
(1) GROUP BY (2) 집계함수 (3) HAVING
1. ORDER BY
(1) ORDER BY
ORDER BY를 사용하면, 특정 열을 기준으로 결과를 정렬해 줄 수 있다.
지난 에피소드에서 만들어둔 refrigerator_db의 food 테이블을 이어서 사용하겠습니다.
SELECT food_name, keep_date
FROM food
ORDER BY keep_date; -- (1) keep_date를 기준으로 오름차순 정렬
SELECT food_name, keep_date
FROM food
ORDER BY keep_date DESC; -- (2) keep_date를 기준으로 내림차순 정렬
(1) Result | (2) Result |
![]() |
![]() |
※ ORDER BY는 ASC(오름차순)을 기본으로 한다. 즉, 아무것도 입력하지 않으면 오름차순 적용.
만약 WHERE 절과 함께 사용한다면, ORDER BY 절은 WHERE 절 뒤에 와야 한다.
SELECT food_name, keep_date, count
FROM food
WHERE count >= 3
ORDER BY keep_date ASC; -- WHERE절 뒤에 위치
Result |
![]() |
(2) LIMIT
LIMIT를 사용하면 조회되는 결과의 개수를 제한할 수 있다.
SELECT *
FROM food
LIMIT 2; -- (1) 첫 2행만 출력
SELECT *
FROM food
LIMIT 2, 2; -- (2) 2번째 행부터 2행만 출력
SELECT food_name, keep_date
FROM food
ORDER BY keep_date
LIMIT 2; -- (3) ORDER BY 절과 함께 사용
(1) Result | (2) Result | (3) Result |
![]() |
![]() |
![]() |
※ 첫번째 행을 0번째 행으로 생각한다.
※ 따라서 김치가 0번째 행, 아이스크림이 1번째 행, 우유가 2번째 행, 콜라가 3번째 행이다.
(3) DISTINCT
DISTINCT를 사용하면, 중복된 데이터를 제거할 수 있다.
SELECT keep_method
FROM food; -- (1) keep_method의 전체 데이터 조회
SELECT DISTINCT keep_method
FROM food; -- (2) keep_method의 중복 데이터 제거
(1) Result | (2) Result |
![]() |
![]() |
2. GROUP BY
(1) GROUP BY
GROUP BY는 데이터를 그룹으로 묶어주는 역할을 한다.
예를 들어 성별에 따른 평균 키를 구한다거나, 연령대별 평균 연봉을 구하는 등의 작업을 하기 위해
성별 혹은 연령을 기준으로 그룹을 나누는 것을 의미한다.
SELECT keep_method "보관 방법", SUM(count) "총 개수"
FROM food
GROUP BY keep_method; -- (1) 보관 방법별 식품 총 개수
SELECT keep_method "보관 방법", AVG(count) "평균 개수"
FROM food
GROUP BY keep_method; -- (2) 보관 방법별 식품 평균 개수
(1) Result | (2) Result |
![]() |
![]() |
※ GROUP BY 절은 집계함수와 함께 쓰이며, 앞의 코드에서 SUM(), AVG()가 집계 함수에 속한다.
(2) 집계함수
집계함수란 여러 행으로부터 하나의 값을 반환하는 함수이다.
집계함수를 사용하면 데이터를 요약할 수 있다.
함수명 | 설명 |
SUM() | 합계를 구한다. |
AVG() | 평균을 구한다. |
MIN() | 최솟값을 구한다. |
MAX() | 최댓값을 구한다. |
COUNT() | 행의 개수를 센다. |
COUNT(DISTINCT) | 행의 개수를 센다. (중복제거) |
SELECT * FROM user; -- (1) 테이블 확인
SELECT COUNT(*) FROM user; -- (2) 전체 데이터 수
SELECT COUNT(user_rank) FROM user; -- (3) user_rank 데이터가 있는 행의 수
(1) Result | (2) Result | (3) Result |
![]() |
![]() |
![]() |
※ COUNT()는 값이 NULL인 행을 제외한 개수를 센다.
(3) HAVING
GROUP BY 절에 조건을 걸고 싶을 때, WHERE 절을 사용하면 오류가 생긴다.
GROUP BY 절은 WHERE 절이 아닌 HAVING 절을 사용해 조건을 걸어준다.
SELECT keep_method, SUM(count)
FROM food
GROUP BY keep_method; -- (1) 조건이 걸려있지 않은 경우
SELECT keep_method, SUM(count)
FROM food
GROUP BY keep_method
HAVING SUM(count) > 5; -- (2) 조건이 걸려있는 경우
(1) Result | (2) Result |
![]() |
![]() |
※ HAVING 절은 반드시 GROUP BY 절 다음에 나와야 한다.
[ Reference ]
📙 우재남, 한빛미디어, 혼자 공부하는 SQL
'📖 STUDY > SQL' 카테고리의 다른 글
[EP.05] 데이터 형식 (0) | 2023.10.17 |
---|---|
[EP.04] 데이터 입력, 수정, 삭제 (0) | 2023.10.16 |
[EP.02] SELECT, FROM, WHERE (1) | 2023.10.12 |
[EP.01] 데이터베이스 (2) | 2023.10.11 |
[EP.00] SQL 공부 다시 시작하기 (2) | 2023.10.11 |