4일차 # 2-20: ORDER BY clause
- select 문에서 가장 나중에 고려됩니다
1. 정렬 순서
① 오름차순: ASC --> 기본값
② 내림차순: DESC
③ null값의 경우 - 오름차순: 맨 뒤
- 내림차순: 맨 앞
2. 정렬 기준
① select list element 이름, 컬럼 alias(column 이름, column alias)
② 숫자 (select-list 상의 위치값)
③ 표현식 : 수식, 함수
1) select list element 이름(컬럼 이름), 컬럼 alias
==> select-list에 나오지 않은 컬럼도 쓸 수 있음
-------------------------
cf.)
==> ERROR: ORA-00904: "ANN_SAL": 부적합한 식별자
<-- column alias는 where 절에서 사용할 수 없으므로
cf.) column alias는 group by 절에서도 사용할 수 없습니다.
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
4 Select 12 * sal ann_sal
1 From emp
2 Where ann_sal>3000
3 GROUP BY ann_sal(X)
5 Having
6 Order by
-------------------------
2) 숫자(select-list 상의 위치값)
==> 중간에 컬럼이나 수식이 삽입될 경우 정렬 순서가 달라집니다
3) 수식
SQL> / --> /는 sql buffer의 내용을 실행하는 SQL*Plus 명령
SQL> / --> 실행할 때마다 정렬 순서가 달라집니다. 왜 그럴까요?
------------------------------------------------------
SQL> select empno, ename, mod(empno, 5)
from emp;
SQL> select empno, ename
from emp
order by mod(empno, 5);
SQL> select empno, ename, mod(empno, 5)
from emp
order by mod(empno, 5);
※modulus :나머지를 구하는 함수
mod(m,n) = 0 ~ n-1
-------------------------------
# 연습문제 풀이시
-------------------------------
- 현재 실습용 서버의 employees, departments 등의 테이블은 데이터 일부만 존재합니다.
- 연습문제에서 employees, departments 등의 테이블은 hr.employees, hr.departments 등으로
테이블 이름 앞에 hr. 을 붙여서 사용하시기 바랍니다.