Возвращение результатов запроса в заданном порядке (ORDER BY)

Задача

Требуется представить имена, должности и заработные платы служащих 10-го отдела и упорядочить их согласн заработным платам (от наименьшей к наибольшей).


Решение

Используйте оператор ORDER BY:

select e.ename, e.job, e.sal
from emp e
where 1=1
and e.deptno =  10
order by e.sal asc;


ENAME      JOB        SAL
---------- ---------- ---
MILLER     CLERK      1300
CLARK      MANAGER    2450
KING       PRESIDENT  5000


Обсуждение

Оператор ORDER BY позволяет упорядочивать строки результирующего множества. В нашем примере строки сортируются по столбцу SAL в возрастающем порядке. По умолчанию ORDER BY осуществляет сортировку по возрастанию, поэтому оператор ASC является необязательным. Чтобы обеспечить сортировку по убыванию, используется оператор DESC.


select e.ename, e.job, e.sal
from emp e
where 1=1
and e.deptno =  10
order by e.sal desc;


ENAME      JOB        SAL
---------- ---------- ---
KING       PRESIDENT  5000
CLARK      MANAGER    2450
MILLER     CLERK      1300

Имя столбца, по которому должна проводиться сортировка, задавать необязательно. Можно указать порядковый номер столбца. нумерация столбцов в списе оператора SELECT начинавется с 1 и осуществляется в направлении слева направо. Например:

select e.ename, e.job, e.sal
from emp e
where 1=1
and e.deptno =  10
order by 3 desc;


ENAME      JOB        SAL
---------- ---------- ---
KING       PRESIDENT  5000
CLARK      MANAGER    2450
MILLER     CLERK      1300

Число 3 в операторе ORDER BY данного примера соответствует третьему столбцу списка оператора SELECT, т.е. столбцу SAL.