`ORDER BY (CASE WHEN id = 999 THEN 0 ELSE id END)` 구문은 `id` 값이 `999`인 행을 먼저 정렬하고, 나머지 `id` 값들은 오름차순으로 정렬하는 방법입니다. 이 구문은 SQL의 `CASE` 문을 사용하여 동적으로 정렬 기준을 변경하는 것을 의미합니다.
### 구문 설명
- `CASE WHEN id = 999 THEN 0 ELSE id END`:
- `id`가 `999`인 경우, 해당 값은 `0`으로 변환됩니다.
- `id`가 `999`가 아닌 경우에는 원래 `id` 값을 유지합니다.
- `ORDER BY`:
- 기본적으로 오름차순 정렬이기 때문에 `0`이 가장 앞에 오게 됩니다.
- 따라서 `id`가 `999`인 행이 가장 먼저 출력되고, 나머지 `id` 값들은 오름차순으로 정렬됩니다.
### 예제
다음과 같은 `users` 테이블이 있다고 가정해 봅시다:
| id | name |
|-----|--------|
| 1 | Alice |
| 999 | Bob |
| 3 | Carol |
| 2 | Dave |
| 100 | Eve |
이제, 위 구문을 사용하여 `id = 999`인 행을 가장 먼저 출력하고, 나머지 `id`는 오름차순으로 정렬하는 쿼리를 작성해보겠습니다:
```sql
SELECT id, name
FROM users
ORDER BY (CASE WHEN id = 999 THEN 0 ELSE id END);
```
### 결과
이 쿼리의 결과는 다음과 같이 정렬됩니다:
| id | name |
|-----|--------|
| 999 | Bob |
| 1 | Alice |
| 2 | Dave |
| 3 | Carol |
| 100 | Eve |
### 정리
- `ORDER BY (CASE WHEN id = 999 THEN 0 ELSE id END)`는 특정 조건(`id = 999`)을 만족하는 행을 먼저 출력하고, 그 이후 나머지 값들을 정렬하는 유용한 방법입니다.
- 이 방식은 특정 행을 목록의 맨 앞이나 뒤로 이동시키고 싶을 때 자주 사용됩니다.
이 방법을 활용하면, 유연하게 정렬 기준을 조정할 수 있습니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
having count(*)=2 (0) | 2024.08.29 |
---|---|
select from group by having order by 순서 (0) | 2024.08.29 |
GROUP BY 쿼리에서는 `ORDER BY` 절에서 사용하는 모든 열이 `SELECT`나 `GROUP BY` 절에 있어야 (0) | 2024.08.29 |
쿼리의 실행 순서와 괄호의 적용 범위 (0) | 2024.08.29 |
쿼리의 실행 순서와 괄호의 적용 범위 (0) | 2024.08.29 |