Язык запросов к реляционным базам данных
Агрегатные функции
Группировка в запросах
Группировка в запросах
Условие на группы
Практическое задание
326.00K
Категория: Базы данныхБазы данных

Язык запросов к реляционным базам данных. Агрегатные функции. Группирование данных

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.
English     Русский Правила