Сортировка результатов запроса (предложение ORDER BY)

Составные условия отбора строк

На практике очень часто простого условия отбора бывает недостаточно. В таких случаях можно задать составное условие отбора, включающую в себя комбинацию простых условий, логических операций AND, OR, NOT и круглых скобок.

Операнды логических операций AND, OR, NOT следует заключать в круглые скобки.

 

Пример 15. Вывести список исходящих вызовов (код=2) длительностью более 50 секунд.

SELECT *

FROM VYZOVY

WHERE (TIP_ID=2) AND (DLIT>50)

 

Пример 16. Вывести список контактов, для которых указан лишь один из параметров: пол или возраст.

SELECT *

FROM KONTAKTY

WHERE ((POL_ID IS NULL) AND (VOZRAST IS NOT NULL)) OR

((POL_ID IS NOT NULL) AND (VOZRAST IS NULL))

 

Предложение ORDER BY позволяет упорядочить строки в таблице результатов запроса в соответствии с указанными столбцами сортировки.

Синтаксис:

ORDER BY <столбец сортировки1> [ASC|DESC][, <столбец сортировки2> [ASC|DESC]] [,…]

 

Предложение ORDER BY может содержать несколько столбцов сортировки, разделенных запятыми. В качестве столбца сортировки может выступать имя столбца таблицы или порядковый номер (1,2, и т.д.) возвращаемого столбца (из предложения SELECT).

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

После каждого столбца сортировки можно задать одно из двух слов: ASC (по возрастанию) или DESC (по убыванию).

По умолчанию сортировка производится в порядке возрастания значений (для текстовых данных – в алфавитном порядке).

В случае сортировки по нескольким столбцам сортировка по каждому следующему столбцу не отменяет результаты сортировки по предыдущему.

Сначала сортировка производится по значениям первого столбца сортировки. Если в нескольких строках значения в этом столбце совпадают, то порядок следования строк определятся по второму столбцу (при его наличии). Если в нескольких строках совпадают значения в первых двух столбцах сортировки, то сортировка производится по третьему столбцу сортировки (при его наличии) и т.д.

Пример. Необходимо упорядочить список людей (фамилия, имя, отчество хранятся в отдельных столбцах). Сначала необходимо отсортировать по фамилии, затем в рамках каждой фамилии – по имени, затем в рамках каждой совокупности фамилии и имени – по отчеству).

 

Пример 17. Вывести список групп контактов в алфавитном порядке.

SELECT ID, NAZV, MEL_ID

FROM GRUPPY

ORDER BY NAZV

 

Пример 18. Вывести список входящих звонков в порядке убывания их длительности.

SELECT ID, TIP_ID, VREMYA, NOMER_ID, DLIT

FROM VYZOVY

WHERE TIP_ID=1

ORDER BY DLIT DESC

 

Пример 19. Вывести список исходящих звонков. Результаты отсортировать сначала в порядке убывания их тарифов, а затем – в хронологическом порядке.

SELECT TIP_ID, VREMYA, NOMER_ID, DLIT, STOIM, STOIM/DLIT*60

FROM VYZOVY

WHERE TIP_ID=2

ORDER BY 6 DESC, VREMYA ASC