1.08M
Категория: Базы данныхБазы данных

Группировка данных

1.

Группировка данных
Агрегирующие функции: COUNT,
MIN, MAX, AVG
Группировка записей: GROUP BY

2.

Функции агрегации
https://dev.mysql.com/doc/refman/5.7/en/aggregatefunctions.html

3.

Агрегирующие функции: COUNT,
MIN, MAX, AVG
Получаем
максимальную цену:
Получаем
минимальную цену:

4.

Особенность агрегирующих
функций
• Мы можем получить только обобщенные
данные , без конкретики по полям.
• В запросах агрегации мы не можем
выводить несколько полей.
• Нельзя использовать различные поля
совместно с агрегированными данными.

5.

6.

Можно одновременно использовать
несколько функций агрегации

7.

Агрегирующие функции могут
быть частью аргумента:

8.

Переименовываем возвращаемые
поля с помощью конструкции AS:

9.

COUNT(*) – возвращает количество
всех записей.

10.

COUNT([поле]) – возвращает
количество записей в конкретном
поле

11.

12.

SUM([название поля]) - суммирует все
значения в поле.

13.

• COUNT(*) – нужно посчитать все записи,
независимо от того, что в них содержится.
• COUNT([название поля]) – количество
записей по указанному полю; записи,
содержащие NULL, не учитываются.
• SUM([название поля]) - суммирует все
значения в поле.

14.

Вычислим стоимость товаров на
складе

15.

Группировка по числовым полям
• Конструкция GROUP_BY [поле] группирует
записи по полю, которое указано после
ключевого слова.
• Особенность применения: мы выводим то
поле (в SELECT), по которому группируем.

16.

Получим все категории, содержащиеся в
таблице:

17.

Особенность применения: мы выводим то
поле (в SELECT), по которому группируем.

18.

Необходимые поля можно
выводить в условиях:
Обратите внимание на то,
что группировка производится после фильтрации!

19.

К полям, по которым мы не производим
группировку, можно помещать в SELECT,
применяя к ним функции агрегации:

20.

Сколько единиц товаров в магазине на
данный момент:

21.

Получим общую стоимость товаров с
разбивкой по категориям:

22.

Отсортируем данные по сумме
товаров:

23.

Группировка по текстовым полям

24.

Выясним, сколько пользователей
зарегистрировано в разрезе по полу:

25.

Проведем группировку сразу по двум полям:
получим
количество
мужчин
и
женщин
определенного
возраста:

26.

Проведем группировку сразу по двум
полям
и
получим
только
несовершеннолетних пользователей

27.

HAVING и WHERE –
фильтр касается только исходных
данных, а не итоговой таблицы.

28.

29.

30.

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

31.

Полезные замечания:
• конструкция HAVING выполняет ту же
функцию,
что
и
WHERE,
только
применительно к результирующе таблице;
• На практике в блоке WHERE лучше
использовать названия столбцов из
реальной таблицы, а для группировок
лучше брать другие имена, чтобы не
возникло путаницы.

32.

Более грамотное оформление
запроса:
English     Русский Правила