Сортировка результатов (фраза ORDER BY)

Язык SQL (продолжение)

В общем случае строки в результирующей таблице SQL-запроса не упорядочены. Однако их можно требуемым образом отсортировать, для чего в оператор SELECT помещается фраза ORDER BY. Фраза ORDER BY включает список разделенных запятыми идентификаторов столбцов, по которым требуется упорядочить результирующую таблицу запроса. Идентификатор столбца может представлять собой либо его имя, либо номер, который идентифицирует элемент списка. Номера столбцов могут использоваться в тех случаях, когда столбцы, по которым следует упорядочить результат, являются вычисляемыми, а фраза AS с указанием имени этого столбца в операторе SELECT отсутствует. Фраза ORDER BY позволяет упорядочить выбранные записи в порядке возрастания (ASC) или убывания (DESC) значений любого столбца или комбинации столбцов.

Фраза ORDER BY всегда должна быть последнейв операторе SELECT.

Пример 9.11. Сортировка по значениям одного столбца. Составить отчет о зарплате всехработников компании, расположив строки в порядке убывания суммы зарплаты.

SELECT KodS, Fname, Lname, ZP
FROM S
ORDER BY ZP DESC;

Этот пример подобен примеру 9.2. Различие состоит лишь в том, что полученные в результате выполнения запроса данные следует упорядочить по убыванию значения заработной платы. Это достигается посредством помещения в конец оператора SELECT фразы ORDER BY.

Во фразе ORDER BY может быть указано и больше одного элемента. Первый элемент называется главным ключом сортировки и он определяет общую упорядоченность строк результирующей таблицы. Если в результирующей таблице значения главного ключа сортировки не уникальны, может оказаться желательным упорядочить строки с одним и тем же значением главного ключа по какому-либо дополнительному ключу сортировки. Если во фразе ORDER BY присутствуют второй и последующие элементы, то такие элементы называют младшими ключамисортировки.

Пример 9.12. Сортировка по нескольким столбцам.Подготовить список сдаваемых в аренду объектов, упорядоченный по их типу.

SELECT KodP, City, Type, Rooms, Rent
FROM P
ORDER BY Type

Результат:

KodP City Type Rooms Rent
P14 Тюмень дом
P04 Тюмень дом
P94 Нижневартовск кварт.
P36 Ишим кварт.
P21 Надым кварт.
P16 Сургут кварт.

В полученных результатах присутствуют сведения о четырех квартирах. Если не, указан младший ключ сортировки, система расположит эти строки в произвольном порядке. Для того чтобы упорядочить их, например, в порядке убывания числа комнат, следует дополнительно указать младший ключ сортировки:

SELECT KodP, City, Type, Rooms, Rent
FROM P
ORDER BY Type, Rooms DESC

Результат:

KodP City Type Rooms Rent
P14 Тюмень дом
P04 Тюмень дом
P94 Нижневартовск кварт.
P21 Надым кварт.
P36 Ишим кварт.
P16 Сургут кварт.