Data Analysis 데이터 분석/SQL 통한 Database 관리

order by 연봉 desc 할때, 연봉값은 같고 사원id 가 다른 두개 있을때 누가 먼저

Queen Julia 2024. 8. 19. 00:16


`ORDER BY 연봉 DESC`로 정렬할 때, 두 행의 `연봉` 값이 동일하고 `사원ID`가 다른 경우, 데이터베이스는 `사원ID`를 기준으로 추가적인 정렬을 하지 않으므로, 그 순서는 불확정적입니다. 즉, 같은 연봉 값을 가진 행들이 어떤 순서로 나올지는 데이터베이스의 구현에 따라 달라질 수 있습니다.

하지만, 원하는 순서를 명확히 지정하고 싶다면, `ORDER BY` 절에 추가적인 정렬 기준을 포함시킬 수 있습니다. 예를 들어, 연봉이 같을 때 `사원ID`로 오름차순 또는 내림차순 정렬하려면 다음과 같이 작성할 수 있습니다:

- **사원ID 오름차순 정렬**:
  ```sql
  ORDER BY 연봉 DESC, 사원ID ASC
  ```

- **사원ID 내림차순 정렬**:
  ```sql
  ORDER BY 연봉 DESC, 사원ID DESC
  ```

### 예시

| 사원ID | 연봉  |
|--------|-------|
| 1      | 5000  |
| 2      | 5000  |
| 3      | 7000  |

만약 `ORDER BY 연봉 DESC, 사원ID ASC`로 정렬한다면, 결과는 다음과 같습니다:

| 사원ID | 연봉  |
|--------|-------|
| 3      | 7000  |
| 1      | 5000  |
| 2      | 5000  |

여기서 `사원ID`가 오름차순으로 정렬되었습니다. 반대로, `ORDER BY 연봉 DESC, 사원ID DESC`로 정렬하면:

| 사원ID | 연봉  |
|--------|-------|
| 3      | 7000  |
| 2      | 5000  |
| 1      | 5000  |

이렇게 사원ID가 내림차순으로 정렬됩니다.

### 요약

- `ORDER BY 연봉 DESC`에서 연봉이 동일한 경우, 순서는 데이터베이스에 따라 다르며, 불확정적입니다.
- 특정 순서를 보장하려면, `ORDER BY` 절에 추가적인 정렬 기준을 명시하는 것이 좋습니다.