SELECT Building
FROM ROOM
GROUP BY Building
HAVING SUM(Seats) > 100;
1.6.4 Сортировка строк
1.6.4.1 Сортировка по столбцу или выражению Как мы уже отмечали, строки в таблицах базы данных неупорядочены.
Также неупорядочены и строки результирующей таблицы запроса, однако для их упорядочения в предложении SELECT можно воспользоваться фразой
ODER BY. Она сортирует по значению указанных в ней столбцов (и выражений над столбцами) строки результирующей таблицы запроса. Синтаксис этой фра-
зы следующий:
ORDER BY спецификация_сортировки[, спецификация_сортировки]...
где спецификация_сортировки имеет такой синтаксис:
выражение_сортировки [ASC | DESC]
Сортировать можно по столбцам (выражениям) тех типов, для которых определены операции сравнения. Это относится, в частности, к символьным строкам, числам и временным значениям. Можно указывать направление сор-
тировки.
Далее в этом уроке мы рассмотрим общие способы упорядочения резуль-
тирующих строк. Правила и возможности сортировки при использовании тео-
ретико-множественных операторов изучаются в следующих разделах курса.
Сортировать строки результирующей таблицы запроса можно по отдель-
ным столбцам, совокупности столбцов, а также по одному или нескольким вы-
ражениям над столбцами. Ниже рассматриваются все эти варианты.
Запрос. Вывести алфавитный список фамилий профессоров.
SELECT Name
FROM TEACHER
WHERE LOWER(Post) = 'профессор'
ORDER BY Name;
Запрос. Вывести номера групп и их рейтинг по убыванию рейтинга.
SELECT Num, Rating
FROM SGROUP
ORDER BY Rating DESC;
Запрос. Вывести фамилии ассистентов и их зарплату по ее возрастанию.
SELECT Name, Salary + Rise
FROM TEACHER
WHERE LOWER(Post) = 'ассистент'
ORDER BY Salary + Rise;
SQL позволяет упорядочивать строки результирующей таблицы не только по тем столбцам, которые в ней присутствуют, но и по столбцам исходной таб-
лицы и выражениям над ними.
Запрос. Вывести фамилии ассистентов по возрастанию их зарплаты.
SELECT Name
FROM TEACHER
WHERE LOWER(Post) = 'ассистент'
ORDER BY Salary + Rise;
Если сортировка производится по столбцу или выражению, указанному в списке фразы SELECT, для указания сортируемого столбца (выражения) во фразе ORDER BY можно воспользоваться синонимом. Например, сортировку по синониму в предыдущем запросе можно указать как ORDER BY НОМЕР.
1.6.4.2 Сортировка по нескольким столбцам или выражениям Для упорядочения строк результирующей таблицы по нескольким столб-
цам следует во фразе ORDER BY привести список этих столбцов. Для каждого из них можно также указать направление сортировки и расположение строк со значениями NULL.
При упорядочении по нескольким столбцам сначала производится сорти-
ровка строк в указанном порядке по первому столбцу из списка, затем набор строк с одинаковым значением отсортированного столбца сортируется по вто-
рому столбцу и т. д.
Запрос. Вывести номера телефонов и фамилии преподавателей. Упорядо-
чить по убыванию номеров телефонов и по возрастанию фамилий.
SELECT Tel, Name
FROM TEACHER
ORDER BY Tel DESC, Name;
1.6.5 Итоги лекции
Усвоив материал этой лекции (урока), студенты научились:
формулировать запросы с группировкой по отдельным столбцам или выражениям;
использовать группировку по нескольким столбцам или выражениям;
задавать условия для отбора групп;
сортировать результаты запроса по отдельным столбцам и выражениям;
сортировать по нескольким столбцам и выражениям (в т.ч. отсутствую-
щим в результирующей таблице);
указывать направление сортировки.
1.7Вложенные запросы (11)
1.8Множественные операции над таблицами (12)
1.9Манипулирование данными (13-14)
1.9.1Добавление новых строк
1.9.2Обновление существующих данных
1.9.3Удаление существующих строк
1.10 Определение таблиц (6-7)
1.10.1Создание таблицы
1.10.2Удаление таблицы
1.10.3Изменение таблицы
1.10.4Представления
1.11 Определение ограничений целостности, ключей, задание прав до-
ступа к данным (17)
2 Программирование БД (19)