Многотабличные запросы

Упорядочивание результатов запроса

Использование вычисляемых полей

Функции агрегирования

Выполняют:

COUNT – подсчет записей в столбце (с полем любого типа),

SUM – сумму значений в столбце,

MIN – минимальное значение в столбце,

MAX – максимальное значение в столбце,

AVG – среднее значение в столбце.

SELECT Count(*) FROM Товары

– определяет общее число записей.

SELECT Count (Distinct Товар)

FROM Товары

– определяет число наименований товара.

SELECT min(Цена) FROM Товары

- выводит минимальную стоимость товара.

GROUP BY – группирование результатов

SELECT и GROUP BY тесно связаны между собой.

Если в запросе есть группировка, то каждый элемент списка SELECT должен иметь единственное значение для всей группы.

В SELECT могут включаться:

• имена столбцов,

• агрегатные функции,

• константы,

• выражения.

GROUP BY позволяет определить подмножество значений в особом поле в терминах другого поля и применить агрегирующую функцию к подмножеству.

Запросы:

Вывести количество студентов в каждой группе.

SELECT Gruppa, COUNT(*) AS kol

FROM student

GROUP BY Gruppa

Вывести сумму стипендии, выдаваемой каждой группе.

SELECT Gruppa, SUM(Stip) AS stipend

FROM student

GROUP BY Gruppa

Вывести среднее значение стипендии по группам:

SELECT Gruppa, AVG (Stip) AS sredn

FROM student

GROUP BY Gruppa

Если же надо определить min стоимости по всем группам товаров, то:

select Товар, min (Цена)

from Tovar

Group by Товар

Совместно с Group By может быть использовано предложение Having, предназначенное для задания ограничений отбора групп, которые будут помещены в результирующую таблицу.

Имена столбцов в Having должны присутствовать и в списке Group By или применяться в агрегатных функциях.

Имеем отношение S (ФИО, Дисциплина, Оценка).

Запрос: Вывести общее количество студентов, сдавших все экзамены (т.е.3).

Select ФИО

From s

Group by ФИО

Having count (Дисциплина) = 3

Пусть имеем дополнительное отношение: Продажи (Код_п, Код, Заказано, Продано), связанное по полю КОД с таблицей Товары.

Определить сумму продаж и сумму заказов.

Select Код, Заказано, Продано,

Цена*Продано AS Сумма_продаж

Цена*Заказано AS Сумма_заказа

From Продажи, Товары

(первые три поля можно и не показывать)

SELECT *

FROM Товары

ORDER BY Цена

SELECT *

FROM Товары

ORDER BY Цена DESC

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

При этой операции объединение информации из таблиц происходит посредством образования пар связанных строк, выбранных из каждой таблицы.

Таблицам можно присвоить имена-псевдонимы, что полезно для осуществления операции соединения таблицы с самой собою и в других ситуациях

Самый простой запрос:

SELECT *

FROM R1, R2 – соответствует декартову произведению таблиц R1, R2.

A B

a b c d

1 2 2 4

2 1 3 3

SELECT * FROM A, B

SELECT *

FROM Товары, Продано

- будет построено «декартово произведение» таблиц

Поэтому перечисление таблиц используется с условием соединения записей из разных таблиц в предложении WHERE:

SELECT *

FROM A, B

WHERE a = c

Результат:

a b c d

2 1 2 4

Соединение таблиц

Соединение таблиц (вывод всех полей, для Стол)

Соединение таблиц (вывод некоторых полей)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: