`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` 절에 추가적인 정렬 기준을 명시하는 것이 좋습니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
rows between unbounded preceding and current row (0) | 2024.08.19 |
---|---|
max(연봉) over (order by 연봉 desc rows current row) as col3 (0) | 2024.08.19 |
roll up 함수 (0) | 2024.08.19 |
roll up, cube, grouping sets언제 뭐써야 하는지 어떻게 알까 (0) | 2024.08.19 |
groupung sets 예시에 대해 알려줘 (0) | 2024.08.19 |