Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
t4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
171.52 Кб
Скачать

3.3 Упорядочивание выборок

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

3.3.1 Изменение порядка строк выборки

Порядок строк выборки изменяют конструкцией:

ORDER BY <порядок_строк> [ASC/DESC]p

Способ упорядочивания определяют зарезервированные слова ASC — "по возрастанию" и DESC — "по убыванию". Способом по умолчанию является ASC.

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

Упорядочивание с использованием имен столбцов. Например, получить список арендаторов, который упорядочен по фамилиям в алфавитном порядке:

SELECT Tn

FROM Tenant

ORDER BY Tn

Упорядочивание с использованием номеров столбцов. Например, получить список арендаторов, упорядоченный по адресам арендуемых объектов:

SELECT Tn, AdT

FROM Tenant

ORDER BY 2

Допускается использование нескольких уровней вложенности при упорядочивании выводимой информации. При этом разрешается смешивать оба способа. Например, если стоимость аренды разных объектов одного типа различна, то получить список объектов недвижимости, упорядоченный сначала по типу объектов, а среди них — по убыванию арендной платы можно так

SELECT Typ, Rn

FROM Rent

ORDER BY Typ, 2 DESC

3.3.2 Группировка выборки

Конструкция GROUP BY инициирует группировку строк указанных FROM таблиц по указанному перечню столбцов. Далее к каждой группе применяется команда SELECT так, что данные каждой группы принимают единственное значение, например, результат арифметического выражения или одной из агрегатных SQL-функций.

Например, определить суммарную годовую стоимость аренды объектов Ивановым можно следующей SQL командой:

SELECT Tenant.Tn, (SUM(12*Rent.Rn)) AS Total

FROM Realty, Lease, Tenant, Rent

WHERE (Tenant.Tn = 'Иванов')

AND (Lease.NTn = Tenant.NTn)

AND (Realty.AdR = Lease.AdR)

AND (Rent.Typ = Realty.Typ)

GROUP BY Tenant.Tn

3.3.3 Выборки из выборок

Предложение HAVING определяет критерии, используемые для исключения групп из выборки, точно также как предложение WHERE делает это для строк.

Например, если необходимо определить максимальная стоимость, каких арендуемых объектов превышает 100 у.е., то следует воспользоваться следующей SQL командой

SELECT Tenant.Tn, (MAX(Rn)) AS Renta

FROM Realty, Lease, Tenant, Rent

WHERE (Tenant.NTn = Lease.NTn)

AND (Lease.AdR = Realty.AdR)

AND (Realty.Typ = Rent.Typ)

GROUP BY Tenant.Tn

HAVING MAX(Rn) > 100

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