Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Сортировка результатов (конструкция order by)

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

Пример 7.1.11. Сортировка по значениям одного столбца

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

SELECT НГ, КОЛ, ПБАЛЛ

FROM ГРУППА

ORDER BY ПБАЛЛ DESC;

Данные следует упорядочить по убыванию значений в столбце ПБАЛЛ. Это достигается посредством помещения в конец оператора SELECT конструкции ORDER BY, задающей сортировку результирующей таблицы по убыванию значений в столбце ПБАЛЛ. А поскольку значения должны располагаться в порядке убывания, то указано ключевое слово DESC. Результаты выполнения запроса представлены в табл. 7.1.13. Обратите внимание, что конструкция ORDER BY может быть записана и в следующем виде: ORDER BY 3 DESC. Здесь 3 обозничает третий столбец в списке выборки оператора SELECT, т.е. столбец ПБАЛЛ.

Таблица 7.1.13. Результат выполнения запроса из примера 7.1.11

№ группы

Кол. ст. в группе

Прох.балл

101

15

4,80

105

35

4,80

203

28

4,70

001

25

4,60

ТМ-31

6

4,45

103

18

4,25

104

19

4,20

102

20

4,00

202

30

4,00

204

25

4,00

403

2

4,00

201

35

3,90

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

Пример 7.1.12. Сортировка по нескольким столбцам

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

SELECT НГ, КОЛ, ПБАЛЛ

FROM ГРУППА

ORDER BY ПБАЛЛ DESC;

После выполнения этого запроса будет создана результирующая таблица (табл. 7.1.14).

Таблица 7.1.14. Результат выполнения запроса из примера 12 с сортировкой по одному столбцу

№ группы

Кол. ст. в группе

Прох.балл

101

15

4,80

105

35

4,80

203

28

4,70

001

25

4,60 

ТМ-31

6

4,45

103

18

4,25

104

19

4,20

102

20

4,00

202

30

4,00

204

25

4,00

403

2

4,00

201

35

3,90

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

SELECT НГ, КОЛ, ПБАЛЛ

FROM ГРУППА

ORDER BY ПБАЛЛ, КОЛ DESC;

Теперь результат выполнения запроса будет упорядочен вначале по проходному баллу (по убыванию), а в пределах одного типа объекта – в порядке убывания значений количества студентов в группе. Результаты выполнения нового варианта запроса представлены в табл. 7.1.15.

Таблица 7.1.15. Результат выполнения запроса из примера 7.1.12 с сортировкой по двум столбцам

№ группы

Кол. ст. в группе

Прох.балл

105

35

4,80

101

15

4,80

203

28

4,70

001

25

4,60 

ТМ-31

6

4,45

103

18

4,25

104

19

4,20

202

30

4,00

204

25

4,00

102

20

4,00

403

2

4,00

201

35

3,90

В стандарте ISO указано, что значения NULL в столбцах или выражениях, для сортировки которых применяется конструкция ORDER BY, должны рассматриваться либо как меньшие, либо как большие по величине, чем все непустые значения. Выбор того или иного варианта оставлен на усмотрение разработчиков СУБД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]