본문 바로가기

DB/PostgreSQL

[ Postgresql ] ORDER BY - 정렬 적용해서 query 하기

반응형

PostgreSQL에서 SELECT 쿼리에 ORDER BY를 사용하면 결과를 특정 열의 값을 기준으로 정렬할 수 있습니다. 정렬은 오름차순(ASC) 또는 내림차순(DESC)으로 설정할 수 있으며, 기본값은 오름차순입니다.


기본 문법

SELECT 열1, 열2, ...
FROM 테이블명
ORDER BY 열 [ASC|DESC];

예제

1. 기본 사용

테이블 employees가 아래와 같다고 가정합니다:

id name salary
1 Alice 50000
2 Bob 45000
3 Charlie 55000

오름차순 정렬

SELECT * FROM employees
ORDER BY salary ASC;

결과:
| id | name | salary |
|------|------------|---------|
| 2 | Bob | 45000 |
| 1 | Alice | 50000 |
| 3 | Charlie | 55000 |

내림차순 정렬

SELECT * FROM employees
ORDER BY salary DESC;

결과:
| id | name | salary |
|------|------------|---------|
| 3 | Charlie | 55000 |
| 1 | Alice | 50000 |
| 2 | Bob | 45000 |


2. 다중 컬럼 정렬

여러 열을 기준으로 정렬하려면, ORDER BY에 여러 열을 지정합니다.

SELECT * FROM employees
ORDER BY salary DESC, name ASC;

설명:

  • salary를 기준으로 내림차순 정렬.
  • salary가 같은 경우 name을 기준으로 오름차순 정렬.

3. CASE 조건과 함께 사용

특정 조건에 따라 정렬할 때 CASE를 사용할 수 있습니다.

SELECT * FROM employees
ORDER BY 
  CASE 
    WHEN salary > 50000 THEN 1
    ELSE 2
  END, name ASC;

설명:

  • salary > 50000인 행을 먼저 정렬.
  • 그런 다음 name 기준으로 오름차순 정렬.

4. NULL 처리

NULL 값을 정렬 기준에 포함하거나 별도로 처리할 수 있습니다.

SELECT * FROM employees
ORDER BY salary ASC NULLS LAST;

설명:

  • 기본적으로 NULL 값은 ASC에서는 처음에, DESC에서는 마지막에 나타납니다.
  • NULLS FIRST 또는 NULLS LAST로 명시적으로 지정 가능합니다.

5. 랜덤 정렬

결과를 무작위로 정렬하려면 RANDOM()을 사용할 수 있습니다.

SELECT * FROM employees
ORDER BY RANDOM();

이러한 기능들을 조합하면 다양한 방식으로 데이터를 정렬할 수 있습니다! 😊

반응형