ORDER BY절
- 사용자가 정한 정렬 기준과 정렬 방식으로 정렬된 결과를 만들 수 있는 옵션절.
정렬 방식
숫자 | 문자 | 날짜 | |
오름차순 / ASC 작은 값 → 큰 값 |
1 → 9 | 'A'→'Z' | 이전→이후 |
내림차순 / DESC 큰 값 → 작은 값 |
9 → 1 | 'Z'→'A' | 이후→이전 |
- 정렬 기준 : hire_date(고용일)
- 정렬 방식 : DESC(내림차순)
mysql> SELECT last_name, job_id, department_id, hire_date -> FROM employees -> ORDER BY hire_date DESC; |
mysql> SELECT employee_id, last_name, salary*12 annsal -> FROM employees -> ORDER BY annsal; |
- 컬럼 위치표기로 정렬 기준 설정
- SELECT절의 세번째 요소값을 기준으로 정렬 기준을 설정.
- 정렬 방식은 생략되었으므로 오름차순이 적용 됨.
mysql> SELECT last_name, job_id, department_id, hire_date -> FROM employees -> ORDER BY 3; |
+-------------+------------+---------------+------------+
| last_name | job_id | department_id | hire_date |
+-------------+------------+---------------+------------+
| Grant | SA_REP | NULL | 1999-05-24 |
| Whalen | AD_ASST | 10 | 1987-09-17 |
| Hartstein | MK_MAN | 20 | 1996-02-17 |
| Fay | MK_REP | 20 | 1997-08-17 |
| Raphaely | PU_MAN | 30 | 1994-12-07 |
| Khoo | PU_CLERK | 30 | 1995-05-18 |
| Baida | PU_CLERK | 30 | 1997-12-24 |
| Tobias | PU_CLERK | 30 | 1997-07-24 |
| Himuro | PU_CLERK | 30 | 1998-11-15 |
| Colmenares | PU_CLERK | 30 | 1999-08-10 |
| Mavris | HR_REP | 40 | 1994-06-07 |
| Weiss | ST_MAN | 50 | 1996-07-18 |
- 정렬기준 별 정렬 방식은 별도로 설정한다.
- department_id는 1차 정렬로 정렬방식이 생략되어 오름차순으로 정렬
- 1차 정렬에서 중복값이 발생하는 경우 2차정렬이 동작하여 중복된 데이터들에 대한 추가적인 정렬을 수행하게 된다.
- 부서id로 오름차순 정렬하되, 동일한 부서에 근무하는 직원들의 경우 급여의 내림차순으로 추가 정렬을 실행한다.
mysql> SELECT last_name, department_id, salary -> FROM employees -> ORDER BY department_id, salary DESC; |
+-------------+---------------+----------+
| last_name | department_id | salary |
+-------------+---------------+----------+
| Grant | NULL | 7000.00 |
| Whalen | 10 | 4400.00 |
| Hartstein | 20 | 13000.00 |
| Fay | 20 | 6000.00 |
| Raphaely | 30 | 11000.00 |
| Khoo | 30 | 3100.00 |
| Baida | 30 | 2900.00 |
| Tobias | 30 | 2800.00 |
| Himuro | 30 | 2600.00 |
| Colmenares | 30 | 2500.00 |
| Mavris | 40 | 6500.00 |
| Fripp | 50 | 8200.00 |
| Weiss | 50 | 8000.00 |
| Kaufling | 50 | 7900.00 |
…
- 위 예문을 위치표기법의 정렬로 작성
mysql> SELECT last_name, department_id, salary -> FROM employees -> ORDER BY 2, 3 DESC; |
연습문제 풀이(p.113)
mysql> SELECT last_name, salary, commission_pct -> FROM employees -> WHERE commission_pct IS NULL -> ORDER BY salary DESC; |
+-------------+----------+----------------+
| last_name | salary | commission_pct |
+-------------+----------+----------------+
| King | 24000.00 | NULL |
| Kochhar | 17000.00 | NULL |
| De Haan | 17000.00 | NULL |
| Hartstein | 13000.00 | NULL |
| Greenberg | 12000.00 | NULL |
| Higgins | 12000.00 | NULL |
| Raphaely | 11000.00 | NULL |
| Baer | 10000.00 | NULL |
…
'⛏️ > Mysql | Oracle' 카테고리의 다른 글
[SQL] 8. DML (0) | 2023.08.09 |
---|---|
[SQL] 7. JOIN (0) | 2023.08.09 |
[SQL] WORKBENCH, DBeaver 설치 (0) | 2023.08.08 |
[SQL] 5. WHERE(조건문)절과 비교 연산자 (0) | 2023.07.25 |
[SQL] 4. SELECT 문법 (0) | 2023.07.19 |