Ранее в запросах, которые мы с вами приводили, результирующие выборки, получались, в произвольном порядке. Что если нужно вывести скажем, список, учеников школы в алфавитном порядке или стоимость товаров по убыванию? Для этого в операторе SELECT предусмотрено предложение ORDER BY. Вот его синтаксис:
------- ORDER BY -- имя столбца ---------------- -------------------------------- . -- порядковый номер столбца --- -------- ASC ---------- -------- DESC ---------- ------------------------- , -----------------------------------
Для начала, давайте проделаем следующий пример: Показать фактические объемы продаж для каждого офиса, отсортированные в алфавитном порядке по названиям, регионов и в каждом регионе - по названию городов.
SQL> SELECT CITY, REGION, SALES 2 FROM OFFICES 3 ORDER BY REGION, CITY 4 / CITY REGION SALES ------------------------------ ------------------------------ --------- Бубурино Восток 367,911 Красный Мотоцикл Восток 692,637 Чугуевск Восток 735,044 Запиндрищинск Запад 186,042 Котрогайка Запад 835,915
Столбец идущий сразу за предложением ORDER BY является ГЛАВНЫМ ключом, столбцы следующие за ним, являются ВТОРОСТЕПЕННЫМИ ключами. Сортировать записи можно как по возрастанию, так и по убыванию.
Например, в следующем выражении: Вывести список офисов, отсортированный по фактическим объемам продаж в порядке убывания.
SQL> SELECT CITY, REGION, SALES 2 FROM OFFICES 3 ORDER BY SALES DESC 4 / CITY REGION SALES ------------------------------ ------------------------------ --------- Котрогайка Запад 835,915 Чугуевск Восток 735,044 Красный Мотоцикл Восток 692,637 Бубурино Восток 367,911 Запиндрищинск Запад 186,042
Получаем отсортированные объемы продаж по убыванию, с применением предиката DESC, для сортировки по возрастанию, применяется ASC, вследствие того, что данный тип сортировки применяется по умолчанию, его можно не указывать. Так же, если столбец сортировки вычисляемый и не имеет имени, в выражении ORDER BY можно просто указать его порядковый номер!
Например, вот так: Вывести список офисов, отсортированный по разности между фактическим и плановым объемам продаж в порядке убывания.
SQL> SELECT CITY, REGION, (SALES - TARGET) 2 FROM OFFICES 3 ORDER BY 3 DESC 4 / CITY REGION (SALES-TARGET) ------------------------------ ------------------------------ -------------- Красный Мотоцикл Восток 117,637 Котрогайка Запад 110,915 Бубурино Восток 17,911 Чугуевск Восток -64,956 Запиндрищинск Запад -113,958
Так же применяя в выражении ORDER BY имена столбцов, номера столбцов, а так же выражения DESC, ASC, возможно строить достаточно сложные условия сортировки.
Например: Вывести список офисов, отсортированный в алфавитном порядке по названиям регионов, а в каждом регионе по - разности между фактическим и плановым объемам продаж в порядке убывания.
SQL> SELECT CITY, REGION, (SALES - TARGET) 2 FROM OFFICES 3 ORDER BY REGION ASC, 3 DESC 4 / CITY REGION (SALES-TARGET) ------------------------------ ------------------------------ -------------- Красный Мотоцикл Восток 117,637 Бубурино Восток 17,911 Чугуевск Восток -64,956 Котрогайка Запад 110,915 Запиндрищинск Запад -113,958
Таким образом, вам будет легко, задать необходимый порядок сортировки вашего запроса и не будет вызывать особенных трудностей! Пробуйте!