반응형
쿼리를 작성하다 보면 특정 컬럼별 내림차순 오름차순이 아닌 특정 조건으로 정렬해야 하는 경우가 있습니다.
SQL을 사용 하여 어떻게 특정 조건으로 정렬하는지 살펴보겠습니다.
아래 쿼리를 사용하여 movies 예시 테이블을 만들었습니다.
CREATE TABLE movies (
id INT PRIMARY KEY,
title VARCHAR(50),
director VARCHAR(50),
release_date DATE,
rating FLOAT,
duration INT
);
INSERT INTO movies (id, title, director, release_date, rating, duration)
VALUES
(1234, '아바타', '제임스 카메론', '2009-12-17', 8.5, 162),
(5678, '인셉션', '크리스토퍼 놀란', '2010-07-21', 8.8, 148),
(9012, '국가대표', '권형진', '2009-12-03', 7.8, 137),
(3456, '겨울왕국', '크리스 벅, 제니퍼 리', '2013-01-16', 7.3, 102),
(7890, '매드맥스: 분노의 도로', '조지 밀러', '2015-05-14', 8.1, 120);
title이 아래 순서대로 정렬 한다면 특정 컬럼으로 order by절에 추가했을 때 결과를 얻을 수 없습니다.
국가대표
겨울왕국
매드맥스: 분노의 도로
인셉션
아바타
따라서 아래와 같이 order by절 아래 case when을 추가한 쿼리를 작성해 주면 됩니다.
select
*
from
movies
order by
case
when title = '국가대표' then 1
when title = '겨울왕국' then 2
when title = '매드맥스: 분노의 도로' then 3
when title = '인셉션' then 4
when title = '아바타' then 5
end
order by 절에서 title 열의 값을 case 문으로 조건을 변경했 습니다.
영화 제목이 '국가대표'인 경우에는 1, '겨울왕국'인 경우에는 2, '매드맥스: 분노의 도로'인 경우에는 3, '인셉션'인 경우에는 4, '아바타'인 경우에는 5를 반환합니다.
반환된 값에 따라 오름차순으로 정렬하여 결과를 출력했습니다.
반응형
'Skills > SQL' 카테고리의 다른 글
[Presto SQL] 가격 범위 별 Item 개수 확인 (0) | 2023.03.25 |
---|---|
최소 구매 금액 미 충족 후, 구매 전환한 사용자 수 구하기 (0) | 2023.03.20 |
SQL LIKE 대신 정규식 사용한 검색 방법: sql multiple like (0) | 2023.03.16 |
SQL을 활용한 임시 테이블 만들기 (0) | 2023.03.15 |
SQL에서 Roll up 함수 활용하기: 계층적 데이터 집계 방법 (0) | 2023.03.14 |