Web Frontend/Database

[SQL] 데이터 정렬하는 법 - ORDER BY절 활용하기

챙v 2025. 3. 5. 16:48
728x90
반응형

데이터를 정렬할 때는 ORDER BY 절을 활용해 결과를 정렬(Sorting)할 수 있습니다. ORDER BY절을 활용하면 목적에 맞게 정렬된 데이터를 불러올 수 있습니다.

✅ ORDER BY 절이란?

  • SELECT 문의 결과를 특정 컬럼 기준으로 정렬
  • 기본 정렬 방식: 오름차순(ASC, 작은 값 → 큰 값 : 타입에 따른 정렬 기준은 따로 정리
  • 내림차순 정렬: DESC (큰 값 → 작은 값)
  • 여러 개의 컬럼을 기준으로 정렬 가능
  • 숫자, 문자, 날짜 데이터 정렬 가능

✅ ORDER BY 절 사용 문법

SELECT 컬럼명
FROM 테이블명
ORDER BY 컬럼명 [ASC | DESC];
  • ASC → 오름차순 정렬 (기본값, 생략 가능)
  • DESC → 내림차순 정렬
  • 여러 개의 컬럼을 정렬할 수도 있음

✅ ORDER BY 절 예제

1️⃣ 오름차순(ASC) 정렬

SELECT * FROM 직원
ORDER BY 급여 ASC;
  • 급여가 낮은 직원부터 높은 직원 순으로 정렬

🔹 ASC는 생략 가능
ORDER BY 급여; 와 동일한 의미

2️⃣ 내림차순(DESC) 정렬

SELECT * FROM 직원
ORDER BY 급여 DESC;
  • 급여가 높은 직원부터 낮은 직원 순으로 정렬

3️⃣ 여러 개의 컬럼으로 정렬

SELECT * FROM 직원
ORDER BY 부서 ASC, 급여 DESC;
  • 부서별로 먼저 정렬한 후, 같은 부서 내에서는 급여가 높은 순으로 정렬

4️⃣ 문자 데이터 정렬

SELECT * FROM 고객
ORDER BY 이름 ASC;
  • 이름을 가나다(ABC) 순으로 정렬
SELECT * FROM 고객
ORDER BY 이름 DESC;
  • 이름을 가나다 역순(ZYX)으로 정렬

5️⃣ 날짜 데이터 정렬

SELECT * FROM 주문
ORDER BY 주문일자 DESC;
  • 최근 주문일자부터 정렬 (최신 주문이 가장 위에 나옴)
SELECT * FROM 주문
ORDER BY 주문일자 ASC;
  • 가장 오래된 주문부터 정렬

6️⃣ 정렬할 컬럼이 NULL 값을 포함할 때

NULL 값이 포함된 컬럼을 정렬하면, NULL이 가장 먼저 오거나 마지막에 올 수 있어요.

SELECT * FROM 직원
ORDER BY 보너스 DESC;
  • NULL이 포함된 경우
    • 오라클(Oracle)에서는 NULL이 가장 큰 값으로 간주되어 내림차순(DESC)에서 마지막에 배치됨
    • MySQL에서는 반대 (NULL이 가장 작은 값)

NULL을 먼저 또는 나중에 배치하려면 NULLS FIRST 또는 NULLS LAST를 사용합니다.

SELECT * FROM 직원
ORDER BY 보너스 DESC NULLS LAST;
  • NULL을 마지막으로 정렬 (Oracle에서만 지원)

7️⃣ CASE 문과 함께 정렬

특정 조건에 따라 정렬 순서를 다르게 하고 싶을 때 CASE 문을 활용할 수 있습니다.

SELECT * FROM 직원
ORDER BY 
    CASE 
        WHEN 직급 = '사장' THEN 1
        WHEN 직급 = '부장' THEN 2
        WHEN 직급 = '과장' THEN 3
        ELSE 4
    END;
  • 사장이 가장 위, 부장이 그다음, 과장이 그다음 순서로 정렬

✅ ORDER BY 정리

기능 사용 예제

오름차순 정렬 (기본값) ORDER BY 컬럼명 ASC;
내림차순 정렬 ORDER BY 컬럼명 DESC;
여러 컬럼 정렬 ORDER BY 컬럼1 ASC, 컬럼2 DESC;
문자 정렬 ORDER BY 이름 ASC;
날짜 정렬 ORDER BY 주문일자 DESC;
NULL 값 우선 정렬 ORDER BY 컬럼명 NULLS FIRST;
조건에 따른 정렬 ORDER BY CASE WHEN ... THEN ... END;

마무리

✅ SQL에서 데이터를 원하는 순서로 정렬하려면 ORDER BY 절을 활용해야 합니다.
✅ 기본적으로 오름차순(ASC) 정렬이지만, DESC를 사용하면 내림차순 정렬 가능
여러 개의 컬럼을 조합하여 정렬 가능하며, NULL 처리 및 조건 정렬도 가능
✅ 데이터를 정렬하면 더 직관적인 분석과 효율적인 데이터 관리 가능

728x90
반응형