0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Описание</a></li>
1
<ul><li><a>Описание</a></li>
2
<li><a>Подготовка к работе</a></li>
2
<li><a>Подготовка к работе</a></li>
3
<li><a>Принцип работы оператора</a></li>
3
<li><a>Принцип работы оператора</a></li>
4
<li><a>Форма записи</a><ul><li><a>Множественные группы</a></li>
4
<li><a>Форма записи</a><ul><li><a>Множественные группы</a></li>
5
</ul></li>
5
</ul></li>
6
<li><a>Примеры работы</a><ul><li><a>Агрегатные функции</a><ul><li><a>Сумма</a></li>
6
<li><a>Примеры работы</a><ul><li><a>Агрегатные функции</a><ul><li><a>Сумма</a></li>
7
<li><a>Среднее значение</a></li>
7
<li><a>Среднее значение</a></li>
8
<li><a>Несколько групп</a></li>
8
<li><a>Несколько групп</a></li>
9
<li><a>Использование функций</a></li>
9
<li><a>Использование функций</a></li>
10
</ul></li>
10
</ul></li>
11
</ul></li>
11
</ul></li>
12
</ul><p>SQL - язык запросов. Он позволяет работать с базами данных в различных СУБД. Наиболее распространенной системой управления является MySQL. Она проста в освоении и подойдет как новичкам, так и более опытным разработчикам.</p>
12
</ul><p>SQL - язык запросов. Он позволяет работать с базами данных в различных СУБД. Наиболее распространенной системой управления является MySQL. Она проста в освоении и подойдет как новичкам, так и более опытным разработчикам.</p>
13
<p>При работе с таблицами в базах данных используются специальные команды. Они позволяют выполнять такие действия, как выборка, сортировка и пр. Особое внимание следует уделить оператору group by в SQL. Далее он будет изучен более подробно. Эта информация пригодится не только начинающим, но и уже продвинутым программистам, а также системным администраторам.</p>
13
<p>При работе с таблицами в базах данных используются специальные команды. Они позволяют выполнять такие действия, как выборка, сортировка и пр. Особое внимание следует уделить оператору group by в SQL. Далее он будет изучен более подробно. Эта информация пригодится не только начинающим, но и уже продвинутым программистам, а также системным администраторам.</p>
14
<h2>Описание</h2>
14
<h2>Описание</h2>
15
<p>Предложения Group By отвечают за группировку. При помощи таких запросов в SQL можно сопоставлять строки. Они встречаются в операциях с агрегатными функциями (Min, AVG, SUM, Count и Max).</p>
15
<p>Предложения Group By отвечают за группировку. При помощи таких запросов в SQL можно сопоставлять строки. Они встречаются в операциях с агрегатными функциями (Min, AVG, SUM, Count и Max).</p>
16
<p>Функция group by в языке SQL будет сообщать системе, как агрегировать данные в неагрегированном столбце, который был запрошен пользователем. Он используется для распределения строк - результата запроса по группам. Группировка данных в SQL при помощи соответствующей команды может осуществляться как по одному параметру, так и по нескольким одновременно.</p>
16
<p>Функция group by в языке SQL будет сообщать системе, как агрегировать данные в неагрегированном столбце, который был запрошен пользователем. Он используется для распределения строк - результата запроса по группам. Группировка данных в SQL при помощи соответствующей команды может осуществляться как по одному параметру, так и по нескольким одновременно.</p>
17
<h2>Подготовка к работе</h2>
17
<h2>Подготовка к работе</h2>
18
<p>Чтобы лучше понять, как работает упомянутый оператор, рекомендуется рассматривать процесс на наглядных примерах. Для этого придется провести небольшую предварительную подготовку. Она заключается в создании исходной таблицы с информацией. Пусть она называется sales и отображает простое представление продаж в магазинах. В ней будут поля:</p>
18
<p>Чтобы лучше понять, как работает упомянутый оператор, рекомендуется рассматривать процесс на наглядных примерах. Для этого придется провести небольшую предварительную подготовку. Она заключается в создании исходной таблицы с информацией. Пусть она называется sales и отображает простое представление продаж в магазинах. В ней будут поля:</p>
19
<ul><li>название локации (место);</li>
19
<ul><li>название локации (место);</li>
20
<li>имя продукта;</li>
20
<li>имя продукта;</li>
21
<li>стоимость;</li>
21
<li>стоимость;</li>
22
<li>время продажи.</li>
22
<li>время продажи.</li>
23
</ul><p>Для работы с группировкой в SQL-запросах типы полей в столбцах будут простыми TEXT (текстовыми). В уже существующем приложении обычно используются внешние ключи к другим таблицам.</p>
23
</ul><p>Для работы с группировкой в SQL-запросах типы полей в столбцах будут простыми TEXT (текстовыми). В уже существующем приложении обычно используются внешние ключи к другим таблицам.</p>
24
<p>Выше - описание таблицы, которую предстоит использовать далее для изучения принципов функционирования group by.</p>
24
<p>Выше - описание таблицы, которую предстоит использовать далее для изучения принципов функционирования group by.</p>
25
<p>В предложенном примере имеются три локации: HQ, 1st Street и Downtown. Здесь поддерживаются всего два продукта - кофе (coffee) и бублики (bagel). Продажи будут вноситься с разными значениями sold_at. Это требуется для демонстрации количества продукции, проданной в различные дни и время.</p>
25
<p>В предложенном примере имеются три локации: HQ, 1st Street и Downtown. Здесь поддерживаются всего два продукта - кофе (coffee) и бублики (bagel). Продажи будут вноситься с разными значениями sold_at. Это требуется для демонстрации количества продукции, проданной в различные дни и время.</p>
26
<p>Примеры, рассмотренные далее, будут отображать реализацию продукции "сегодня", "вчера", "позавчера".</p>
26
<p>Примеры, рассмотренные далее, будут отображать реализацию продукции "сегодня", "вчера", "позавчера".</p>
27
<h2>Принцип работы оператора</h2>
27
<h2>Принцип работы оператора</h2>
28
<p>Рассматривая примеры использования group by, необходимо понимать, как функционирует соответствующая команда. Рекомендуется для этого изучить жизненный случай.</p>
28
<p>Рассматривая примеры использования group by, необходимо понимать, как функционирует соответствующая команда. Рекомендуется для этого изучить жизненный случай.</p>
29
<p>Дана комната, в которой много людей. Они родились в самых разных странах. Требуется вычислить средний рост людей в разрезе по месту рождения. Для этого сначала происходит разделение людей на группы по странам, из которых они прибыли. Только после этого удастся рассчитать средний рост в каждом сформированном "классе".</p>
29
<p>Дана комната, в которой много людей. Они родились в самых разных странах. Требуется вычислить средний рост людей в разрезе по месту рождения. Для этого сначала происходит разделение людей на группы по странам, из которых они прибыли. Только после этого удастся рассчитать средний рост в каждом сформированном "классе".</p>
30
<p>Аналогичным образом функционирует рассматриваемый оператор. Теперь ясно, как работает group by. Эта функция группирует информацию по строкам. Сначала нужно определить, как будет осуществляться классификация. После - произвести необходимые вычисления или агрегации.</p>
30
<p>Аналогичным образом функционирует рассматриваемый оператор. Теперь ясно, как работает group by. Эта функция группирует информацию по строкам. Сначала нужно определить, как будет осуществляться классификация. После - произвести необходимые вычисления или агрегации.</p>
31
<h2>Форма записи</h2>
31
<h2>Форма записи</h2>
32
<p>Предложение Group By будет зависеть от непосредственного использования группирования. Общая форма записи следующая:</p>
32
<p>Предложение Group By будет зависеть от непосредственного использования группирования. Общая форма записи следующая:</p>
33
<p> SELECT название_столбцов </p>
33
<p> SELECT название_столбцов </p>
34
<p> FROM имя_имеющейся_таблицы</p>
34
<p> FROM имя_имеющейся_таблицы</p>
35
<p> [WHERE необходимые условия для выборки полей]</p>
35
<p> [WHERE необходимые условия для выборки полей]</p>
36
<p> GROUP BY имена_стоблцов_в_таблице</p>
36
<p> GROUP BY имена_стоблцов_в_таблице</p>
37
<p> Если необходимо вывести всего один столбец, по которому осуществляется группировка, оператор будет выбирать уникальные значения. Дубликаты из результирующей таблицы убираются. В данном случае group by функционирует точно также, как и ключевое слово DISTINCT.</p>
37
<p> Если необходимо вывести всего один столбец, по которому осуществляется группировка, оператор будет выбирать уникальные значения. Дубликаты из результирующей таблицы убираются. В данном случае group by функционирует точно также, как и ключевое слово DISTINCT.</p>
38
<h3>Множественные группы</h3>
38
<h3>Множественные группы</h3>
39
<p>Рассматриваемый оператор позволяет группировать информацию в самое разное количество групп и подгрупп. Представленные при помощи group by примеры далее наглядно продемонстрируют соответствующие операции.</p>
39
<p>Рассматриваемый оператор позволяет группировать информацию в самое разное количество групп и подгрупп. Представленные при помощи group by примеры далее наглядно продемонстрируют соответствующие операции.</p>
40
<p>Предложения группировки в SQL применяются тогда, когда можно использовать такие обороты как:</p>
40
<p>Предложения группировки в SQL применяются тогда, когда можно использовать такие обороты как:</p>
41
<ul><li>по чему-то;</li>
41
<ul><li>по чему-то;</li>
42
<li>в каждом.</li>
42
<li>в каждом.</li>
43
</ul><p>Примеры - людей можно разделить по среднему росту по стране рождения, а также выяснить общее количество лиц в каждом "классе" с тем или иным цветом волос. В случае с подготовленной ранее таблицей администратор способен уточнить общее количество продаж по каждому продукту.</p>
43
</ul><p>Примеры - людей можно разделить по среднему росту по стране рождения, а также выяснить общее количество лиц в каждом "классе" с тем или иным цветом волос. В случае с подготовленной ранее таблицей администратор способен уточнить общее количество продаж по каждому продукту.</p>
44
<h2>Примеры работы</h2>
44
<h2>Примеры работы</h2>
45
<p>Далее будут приведены несколько наглядных примеров использования group by в программном коде. Сам оператор составляется легко: достаточно указать соответствующее ключевое слово и прописать поля, по которым осуществляется группировка:</p>
45
<p>Далее будут приведены несколько наглядных примеров использования group by в программном коде. Сам оператор составляется легко: достаточно указать соответствующее ключевое слово и прописать поля, по которым осуществляется группировка:</p>
46
<p>В Select as размещают описание локации. Данные будут группироваться по соответствующему столбцу. Чтобы увидеть имена созданных групп, необходимо воспользоваться следующей записью group by:</p>
46
<p>В Select as размещают описание локации. Данные будут группироваться по соответствующему столбцу. Чтобы увидеть имена созданных групп, необходимо воспользоваться следующей записью group by:</p>
47
<p>Если посмотреть на необработанную часть таблицы, можно заметить 4 строчки с локацией HQ, две - с Downtown и 1st street.</p>
47
<p>Если посмотреть на необработанную часть таблицы, можно заметить 4 строчки с локацией HQ, две - с Downtown и 1st street.</p>
48
<p>При grouping by location база возьмет соответствующие входные строки и определит среди них уникальные локации. Они будут выступать в виде "групп", по которым осуществляется дальнейшая классификация.</p>
48
<p>При grouping by location база возьмет соответствующие входные строки и определит среди них уникальные локации. Они будут выступать в виде "групп", по которым осуществляется дальнейшая классификация.</p>
49
<p>Если выбрать столбец product, команда будет несколько иной:</p>
49
<p>Если выбрать столбец product, команда будет несколько иной:</p>
50
<p>Результатом станет ошибка:</p>
50
<p>Результатом станет ошибка:</p>
51
<p>Связано это с тем, что 8 строк, имеющихся в базе, при помощи group by пользователь попытался "поместить" в 3. Оставшиеся столбцы не получится возвращать просто так. Для применения всех данных из таблицы необходимо выделить соответствующую информацию из "остатка" в три локационные groups. Это значит, что сведения должны быть или агрегированы, или над ними обязательно выполняются вычисления для вывода результирующих данных.</p>
51
<p>Связано это с тем, что 8 строк, имеющихся в базе, при помощи group by пользователь попытался "поместить" в 3. Оставшиеся столбцы не получится возвращать просто так. Для применения всех данных из таблицы необходимо выделить соответствующую информацию из "остатка" в три локационные groups. Это значит, что сведения должны быть или агрегированы, или над ними обязательно выполняются вычисления для вывода результирующих данных.</p>
52
<h3>Агрегатные функции</h3>
52
<h3>Агрегатные функции</h3>
53
<p>Далее предстоит рассмотреть несколько примеров с агрегатными функциями относительно group by. Каждая запись в sales - это информация об одной продаже. Это значит, что число продаж по локации = строки в каждой группе при разделении по локациям.</p>
53
<p>Далее предстоит рассмотреть несколько примеров с агрегатными функциями относительно group by. Каждая запись в sales - это информация об одной продаже. Это значит, что число продаж по локации = строки в каждой группе при разделении по локациям.</p>
54
<p>Для получения информации о том, сколько в каждом "месте" было продано продукции, используется такая запись с group by:</p>
54
<p>Для получения информации о том, сколько в каждом "месте" было продано продукции, используется такая запись с group by:</p>
55
<p>При помощи count вычисляется количество строк в каждой группе. С выражениями команда тоже совмещается.</p>
55
<p>При помощи count вычисляется количество строк в каждой группе. С выражениями команда тоже совмещается.</p>
56
<p>База выполняет запрос так:</p>
56
<p>База выполняет запрос так:</p>
57
<ul><li>from sales - получение всех записей из таблицы sales;</li>
57
<ul><li>from sales - получение всех записей из таблицы sales;</li>
58
<li>group by location - определение уникальных групп по типу локаций;</li>
58
<li>group by location - определение уникальных групп по типу локаций;</li>
59
<li>select… - выбор имени "места" и счет количества строк в группе.</li>
59
<li>select… - выбор имени "места" и счет количества строк в группе.</li>
60
</ul><p>Для вывода информации в читабельной форме, количество строк (результат) будет иметь псевдоним as number_of_sales. Итоговая таблица предлагает две колонки:</p>
60
</ul><p>Для вывода информации в читабельной форме, количество строк (результат) будет иметь псевдоним as number_of_sales. Итоговая таблица предлагает две колонки:</p>
61
<h4><em>Сумма</em></h4>
61
<h4><em>Сумма</em></h4>
62
<p>Sum - команда, которая помогает при помощи group by суммировать информацию. Пример - расчет общей выручки в каждом городе:</p>
62
<p>Sum - команда, которая помогает при помощи group by суммировать информацию. Пример - расчет общей выручки в каждом городе:</p>
63
<p>Выше - пример обработки соответствующего запроса.</p>
63
<p>Выше - пример обработки соответствующего запроса.</p>
64
<h4><em>Среднее значение</em></h4>
64
<h4><em>Среднее значение</em></h4>
65
<p>Для расчета среднего значения в group by необходимо пользоваться AVG:</p>
65
<p>Для расчета среднего значения в group by необходимо пользоваться AVG:</p>
66
<p>Вот - пример средней суммы выручки.</p>
66
<p>Вот - пример средней суммы выручки.</p>
67
<h4><em>Несколько групп</em></h4>
67
<h4><em>Несколько групп</em></h4>
68
<p>Чтобы разделить группы на подгруппы достаточно добавить к предложению group by второе условие классификации:</p>
68
<p>Чтобы разделить группы на подгруппы достаточно добавить к предложению group by второе условие классификации:</p>
69
<p>Результат может быть возвращен при помощи select. Order by добавлено для удобства:</p>
69
<p>Результат может быть возвращен при помощи select. Order by добавлено для удобства:</p>
70
<p>Вот пример продаж по каждому продукту:</p>
70
<p>Вот пример продаж по каждому продукту:</p>
71
<p>Ничего трудного в процессе нет. Но group by может работать с функциями.</p>
71
<p>Ничего трудного в процессе нет. Но group by может работать с функциями.</p>
72
<h4><em>Использование функций</em></h4>
72
<h4><em>Использование функций</em></h4>
73
<p>Можно попытаться найти общее количество продаж в день. Для этого используется шаблон, который применялся со столбцом sold_at:</p>
73
<p>Можно попытаться найти общее количество продаж в день. Для этого используется шаблон, который применялся со столбцом sold_at:</p>
74
<p>Для получения данных в нужном формате необходимо конвертировать значения даты и времени для каждой записи в обычную дату. После - все записи о продажах, совершенных в один и тот же день, отнести к одной "общей" группе.</p>
74
<p>Для получения данных в нужном формате необходимо конвертировать значения даты и времени для каждой записи в обычную дату. После - все записи о продажах, совершенных в один и тот же день, отнести к одной "общей" группе.</p>
75
<p><a>Здесь</a>можно увидеть больше примеров использования изученного оператора.<em>Прокачать <a>навыки работы с базами данных</a> можно на курсах Otus</em>.<a></a></p>
75
<p><a>Здесь</a>можно увидеть больше примеров использования изученного оператора.<em>Прокачать <a>навыки работы с базами данных</a> можно на курсах Otus</em>.<a></a></p>
76
76