Изменение порядка выводимых строк (ORDER BY)
Порядок выводимых строк может быть изменен с помощью опционального (дополнительного) предложения ORDER BY в конце SQL-запроса. Это предложение имеет вид: ORDER BY <порядок строк> [ASC | DESC]
Порядок строк может задаваться одним из двух способов:
- именами столбцов
- номерами столбцов.
Способ упорядочивания определяется дополнительными зарезервированными словами ASC и DESC. Способом по умолчанию - если ничего не указано - является упорядочивание "по возрастанию" (ASC). Если же указано слово "DESC", то упорядочивание будет производиться "по убыванию".
Подчеркнем еще раз, что предложение ORDER BY должно указываться в самом конце запроса.
Упорядочивание с использованием имен столбцов SELECT first_name, last_name, dept_no, job_code, salary FROM employee ORDER BY last_name
получить список сотрудников, упорядоченный по фамилиям в алфавитном порядке
FIRST_NAME | LAST_NAME | DEPT_NO | JOB_CODE | SALARY |
Janet | Baldwin | 110 | Sales | 61637.81 |
Oliver H. | Bender | 000 | CEO | 212850.00 |
Ann | Bennet | 120 | Admin | 22935.00 |
Dana | Bishop | 621 | Eng | 62550.00 |
Kelly | Brown | 600 | Admin | 27000.00 |
Jennifer M. | Burbank | 622 | Eng | 53167.50 |
Kevin | Cook | 670 | Dir | 111262.50 |
Roger | De Souza | 623 | Eng | 69482.62 |
Roberto | Ferrari | 125 | SRep | 99000000.00 |
получить список сотрудников, упорядоченный по фамилиям в порядке, обратном алфавитному
FIRST_NAME | LAST_NAME | DEPT_NO | JOB_CODE | SALARY |
Katherine | Young | 623 | Mngr | 67241.25 |
Bruce | Young | 621 | Eng | 97500.00 |
Michael | Yanowski | 100 | SRep | 44000.00 |
Takashi | Yamamoto | 115 | SRep | 7480000.00 |
Randy | Williams | 672 | Mngr | 56295.00 |
K. J. | Weston | 130 | SRep | 86292.94 |
Claudia | Sutherland | 140 | SRep | 100914.00 |
Walter | Steadman | 900 | CFO | 116100.00 |
Willie | Stansbury | 120 | Eng | 39224.06 |
Roger | Reeves | 120 | Sales | 33620.62 |
Столбец, определяющий порядок вывода строк, не обязательно дожен присутствовать в списке выбираемых элементов (столбцов): SELECT first_name, last_name, dept_no, job_code FROM employee ORDER BY salary
получить список сотрудников, упорядоченный по их зарплате
FIRST_NAME | LAST_NAME | DEPT_NO | JOB_CODE |
Ann | Bennet | 120 | Admin |
Kelly | Brown | 600 | Admin |
Sue Anne | O'Brien | 670 | Admin |
Mark | Guckenheimer | 622 | Eng |
Roger | Reeves | 120 | Sales |
Bill | Parker | 623 | Eng |
Упорядочивание с использованием номеров столбцов
SELECT first_name, last_name, dept_no, job_code, salary * 1.1 FROM employee ORDER BY 5получить список сотрудников, упорядоченный по их зарплате с 10% надбавкой
FIRST_NAME | LAST_NAME | DEPT_NO | JOB_CODE | |
Ann | Bennet | 120 | Admin | 25228.5 |
Kelly | Brown | 600 | Admin | 29700 |
Sue Anne | O'Brien | 670 | Admin | 34402.5 |
Mark | Guckenheimer | 622 | Eng | 35200 |
Roger | Reeves | 120 | Sales | 36982.6875 |
Bill | Parker | 623 | Eng | 38500 |
Допускается использование нескольких уровней вложенности при упорядочивании выводимой информации по столбцам; при этом разрешается смешивать оба способа. SELECT first_name, last_name, dept_no, job_code, salary * 1.1 FROM employee ORDER BY dept_no, 5 DESC, last_name
получить список сотрудников, упорядоченный сначала по номерам отделов, в отделах - по убыванию их зарплаты (с 10%), а в пределах одной зарплаты - по фамилиям
FIRST_NAME | LAST_NAME | DEPT_NO | JOB_CODE | |
Oliver H. | Bender | 000 | CEO | 234135 |
Terri | Lee | 000 | Admin | 59172.3 |
Mary S. | MacDonald | 100 | VP | 122388.75 |
Michael | Yanowski | 100 | SRep | 48400.000000001 |
Luke | Leung | 110 | SRep | 75685.5 |
Janet | Baldwin | 110 | Sales | 67801.59375 |
Takashi | Yamamoto | 115 | SRep | 8228000.0000001 |
Yuki | Ichida | 115 | Eng | 6600000.0000001 |