Similar presentations:
Язык запросов к реляционным базам данных. Агрегатные функции. Группирование данных
1. Язык запросов к реляционным базам данных
Агрегатные функцииГруппирование данных
2. Агрегатные функции
Функции агрегирования предназначены длявычисления некоторых значений для заданного
множества строк.
COUNT()
SUM()
AVG()
MIN()
MAX()
– количество строк или не пустых значений
столбцов, полученных в запросе
– сумма значений в столбце всех строк,
полученных в запросе
– среднее арифметическое значение в столбце все
строк, полученных в запросе
– минимальное значение в столбце из все строк,
полученных в запросе
– максимальное значение в столбце из все строк,
полученных в запросе
3.
Запросы, содержащие агрегатные функции,называются итоговыми.
1. SUM - суммирует значения и возвращает итог.
SELECT SUM(quantity)
FROM purchase;
2. AVG – возвращает среднее значение по указанному
столбцу.
SELECT AVG(product_price)
FROM product;
4.
3. MIN – возвращает минимальное значение изуказанного столбца.
SELECT MIN(product_price)
FROM product;
4. MAX - возвращает максимальное значение из
указанного столбца.
SELECT MAX(product_price)
FROM product;
5.
5. COUNT – подсчитывает записи.SELECT COUNT(*)
FROM purchase;
-- число строк с учетом NULL
значений
SELECT COUNT(product_name)
FROM purchase;
--значений в столбце,
игнорируя NULL
6.
Рассмотрим примеры итоговых запросов для БДторговой компании
7.
Пример. Сколько клиентов у компанииSELECT Count(Код) as [Кол-во Клиентов]
FROM Клиенты
8.
Пример. Сколько различных должностей имеется вкомпании
Последовательность составления правильного запроса
Шаг 1. Получим список должностей всех
сотрудников компании
SELECT Должность
FROM Служащие
Шаг 2. Уберем одинаковые строки
SELECT DISTINCT Должность
FROM Служащие
Шаг 3. Получим количество строк
SELECT Count(DISTINCT Должность) As Кол
FROM Клиенты
9. Группировка в запросах
Группировка – это промежуточный итоговый запросПример. Какова средняя стоимость заказов
по каждому служащему
SELECT Продавец, Стоим
FROM Заказ
ORDER BY Продавец
SELECT Продавец, AVG(Стоим)
FROM Заказ
Ошибка в запросе
ORDER BY Продавец
SELECT Продавец, AVG(Стоим)
FROM Заказ
GROUP BY Продавец
ORDER BY Продавец
AVG
AVG
AVG
AVG
10. Группировка в запросах
Пример. Определить общую сумму заказов по каждомуклиенту для каждого служащего
SELECT Продавец, Заказчик, SUM(Стоим)
FROM Заказ
GROUP BY Продавец , Заказчик
В список возвращаемых столбцов
всегда должны входить столбцы
группировки и агрегатные функции
11.
Группировка в запросахВ оператор SELECT можно включить
несколько групповых функций.
SELECT Город, AVG(Продажи) AS
СредПродажи, COUNT(Продажи) AS
КолПродаж
FROM Офис
GROUP BY Город;
12. Условие на группы
Для отбора строк, полученных группировкой, используетсявыражение HAVING
Пример. Какова средняя стоимость заказа для каждого
служащего из числа тех, у кого общая стоимость
заказов превышает 30000
SELECT Продавец, AVG(Стоим)
FROM Заказ
GROUP BY Продавец
HAVING SUM(Стоим) > 30000
В предложение HAVING должна входить как минимум одна
агрегатная функция. В противном случае это условие можно
переместить в предложение WHERE
13. Практическое задание
1. Напишите запрос, показывающий, сколько всегоимеется товаров в таблице product.
2.Напишите запрос, показывающий, для какого
количества товаров (таблица product) не указана цена.
3. Напишите запрос, выводящий минимальную и
максимальную цену товаров product_price.
4. Напишите запрос, показывающий, какая сумма была
выручена с продаж товаров каждого наименования.
5. Напишите запрос, показывающий, какая сумма была
выручена с продаж товаров каждого наименования.
Вывести только те записи, для которых сумма продаж
больше 125.