1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Язык SQL - не просто язык запросов, а мощный инструмент, похожий на язык программирования, хотя и очень специфичный. Как и в других языках, здесь есть функции, незаменимые в конкретных задачах: найти сумму или среднее по столбцу, минимум или максимум. Такие функции называются<strong>агрегатными</strong>.</p>
1
<p>Язык SQL - не просто язык запросов, а мощный инструмент, похожий на язык программирования, хотя и очень специфичный. Как и в других языках, здесь есть функции, незаменимые в конкретных задачах: найти сумму или среднее по столбцу, минимум или максимум. Такие функции называются<strong>агрегатными</strong>.</p>
2
<p>Чтобы вызвать агрегатную функцию, нужно написать ее имя и затем в круглых скобках передать<strong>аргументы</strong>- переменные, над которыми будут совершаться действия. В этом уроке мы поближе познакомимся с агрегатными функциями и их аргументами.</p>
2
<p>Чтобы вызвать агрегатную функцию, нужно написать ее имя и затем в круглых скобках передать<strong>аргументы</strong>- переменные, над которыми будут совершаться действия. В этом уроке мы поближе познакомимся с агрегатными функциями и их аргументами.</p>
3
<h2>Функция COUNT</h2>
3
<h2>Функция COUNT</h2>
4
<p>Ранее в курсе мы научились выбирать все записи из таблицы. Например, мы можем выбрать все записи из таблицы пользователей с помощью такого запроса:</p>
4
<p>Ранее в курсе мы научились выбирать все записи из таблицы. Например, мы можем выбрать все записи из таблицы пользователей с помощью такого запроса:</p>
5
<p><a>View on DB Fiddle</a></p>
5
<p><a>View on DB Fiddle</a></p>
6
<p>Запрос вернет нам много строк, но точное их количество мы не знаем. Чтобы это выяснить, можно использовать функцию COUNT - она возвращает количество записей в выборке.</p>
6
<p>Запрос вернет нам много строк, но точное их количество мы не знаем. Чтобы это выяснить, можно использовать функцию COUNT - она возвращает количество записей в выборке.</p>
7
<p>Ответить на вопрос "А сколько записей содержится в таблице users?" можно с помощью такого запроса:</p>
7
<p>Ответить на вопрос "А сколько записей содержится в таблице users?" можно с помощью такого запроса:</p>
8
<p><a>View on DB Fiddle</a></p>
8
<p><a>View on DB Fiddle</a></p>
9
<p>Этот запрос выведет нам ровно одно число - количество строк в запросе. Это равносильно количеству пользователей в нашей базе, потому что в этой таблице хранится информация об уникальных пользователях.</p>
9
<p>Этот запрос выведет нам ровно одно число - количество строк в запросе. Это равносильно количеству пользователей в нашей базе, потому что в этой таблице хранится информация об уникальных пользователях.</p>
10
<p>В качестве аргумента мы передали символ *, который заменяет все поля таблицы.</p>
10
<p>В качестве аргумента мы передали символ *, который заменяет все поля таблицы.</p>
11
<p>Еще в качестве аргумента мы можем передать имя поля. В этом случае функция вернет нам количество строк, в которых поле НЕ равно NULL. Выполним такой запрос:</p>
11
<p>Еще в качестве аргумента мы можем передать имя поля. В этом случае функция вернет нам количество строк, в которых поле НЕ равно NULL. Выполним такой запрос:</p>
12
<p><a>View on DB Fiddle</a></p>
12
<p><a>View on DB Fiddle</a></p>
13
<p>Этот запрос также вернул значение 99 - это количество строк, id которых не равен NULL.</p>
13
<p>Этот запрос также вернул значение 99 - это количество строк, id которых не равен NULL.</p>
14
<p>Подадим в качестве аргумента поле email_confirmed:</p>
14
<p>Подадим в качестве аргумента поле email_confirmed:</p>
15
<p><a>View on DB Fiddle</a></p>
15
<p><a>View on DB Fiddle</a></p>
16
<p>Этот запрос вернул 0, потому что в таблице поле email_confirmed не содержит никаких данных.</p>
16
<p>Этот запрос вернул 0, потому что в таблице поле email_confirmed не содержит никаких данных.</p>
17
<p>Обратите внимание, что COUNT возвращает количество записей в запросе, а не в таблице:</p>
17
<p>Обратите внимание, что COUNT возвращает количество записей в запросе, а не в таблице:</p>
18
<p><a>View on DB Fiddle</a></p>
18
<p><a>View on DB Fiddle</a></p>
19
<p>Этот запрос вернет количество девушек среди всех пользователей.</p>
19
<p>Этот запрос вернет количество девушек среди всех пользователей.</p>
20
<h2>Функция SUM</h2>
20
<h2>Функция SUM</h2>
21
<p>Функция SUM возвращает сумму всех значений:</p>
21
<p>Функция SUM возвращает сумму всех значений:</p>
22
<p><a>View on DB Fiddle</a></p>
22
<p><a>View on DB Fiddle</a></p>
23
<p>В этом запросе мы нашли суммарное время, проведенное всеми пользователями на онлайн-курсах.</p>
23
<p>В этом запросе мы нашли суммарное время, проведенное всеми пользователями на онлайн-курсах.</p>
24
<p>В качестве аргумента в функцию SUM нужно передать числовое поле. Если передать поле, в котором хранятся строки или даты, то запрос вернет ошибку. Также, не получится передать в функцию символ *, как мы это делали с функцией COUNT:</p>
24
<p>В качестве аргумента в функцию SUM нужно передать числовое поле. Если передать поле, в котором хранятся строки или даты, то запрос вернет ошибку. Также, не получится передать в функцию символ *, как мы это делали с функцией COUNT:</p>
25
<p><a>View on DB Fiddle</a></p>
25
<p><a>View on DB Fiddle</a></p>
26
<h2>Функция AVG</h2>
26
<h2>Функция AVG</h2>
27
<p>Чтобы найти среднее арифметическое всех значений, нужно воспользоваться функцией AVG (<em>average</em>- среднее).</p>
27
<p>Чтобы найти среднее арифметическое всех значений, нужно воспользоваться функцией AVG (<em>average</em>- среднее).</p>
28
<p>В таблице ниже вы увидите, как это происходит:</p>
28
<p>В таблице ниже вы увидите, как это происходит:</p>
29
<p>Работает функция так же как и SUM. В качестве аргумента нужно передать числовое поле.</p>
29
<p>Работает функция так же как и SUM. В качестве аргумента нужно передать числовое поле.</p>
30
<p>Найдем среднее время, проведенное пользователем с id = 9 на площадке онлайн-школы:</p>
30
<p>Найдем среднее время, проведенное пользователем с id = 9 на площадке онлайн-школы:</p>
31
<p><a>View on DB Fiddle</a></p>
31
<p><a>View on DB Fiddle</a></p>
32
<h2>Функции MAX и MIN</h2>
32
<h2>Функции MAX и MIN</h2>
33
<p>Функции MAX и MIN позволяют найти максимальное и минимальное значение соответственно. Найдем максимальное время прохождения курса:</p>
33
<p>Функции MAX и MIN позволяют найти максимальное и минимальное значение соответственно. Найдем максимальное время прохождения курса:</p>
34
<p><a>View on DB Fiddle</a></p>
34
<p><a>View on DB Fiddle</a></p>
35
<p>А теперь найдем минимальное время:</p>
35
<p>А теперь найдем минимальное время:</p>
36
<p><a>View on DB Fiddle</a></p>
36
<p><a>View on DB Fiddle</a></p>
37
-
<p>В качестве аргументов в функции MAX и MIN можно передавать поля числовых типов, а так же даты и строки. Для строк минимальное и максимальное значения - это первая и последняя строки, упорядоченные по алфавиту:</p>
37
+
<p>В качестве аргументов в функции MAX и MIN можно передавать поля числовых типов, а также даты и строки. Для строк минимальное и максимальное значения - это первая и последняя строки, упорядоченные по алфавиту:</p>
38
<p><a>View on DB Fiddle</a></p>
38
<p><a>View on DB Fiddle</a></p>
39
<p>Запрос с функцией MIN выведет пользователя Abelardo58, потому что он идет первым по алфавиту.</p>
39
<p>Запрос с функцией MIN выведет пользователя Abelardo58, потому что он идет первым по алфавиту.</p>
40
<p>Рассмотрим еще один пример:</p>
40
<p>Рассмотрим еще один пример:</p>
41
<p><a>View on DB Fiddle</a></p>
41
<p><a>View on DB Fiddle</a></p>
42
<p>Запрос с функцией MAX выведет пользователя Zoey24, потому что он идет по алфавиту последним.</p>
42
<p>Запрос с функцией MAX выведет пользователя Zoey24, потому что он идет по алфавиту последним.</p>
43
<h2>Выводы</h2>
43
<h2>Выводы</h2>
44
<p>В этом уроке мы познакомились с агрегатными функциями:</p>
44
<p>В этом уроке мы познакомились с агрегатными функциями:</p>
45
<ul><li>COUNT - позволяет подсчитать количество строк</li>
45
<ul><li>COUNT - позволяет подсчитать количество строк</li>
46
<li>SUM - позволяет найти сумму чисел</li>
46
<li>SUM - позволяет найти сумму чисел</li>
47
<li>AVG - позволяет подсчитать среднее арифметическое</li>
47
<li>AVG - позволяет подсчитать среднее арифметическое</li>
48
<li>MAX - возвращает максимальное значение численного поля или последнюю строку по алфавиту</li>
48
<li>MAX - возвращает максимальное значение численного поля или последнюю строку по алфавиту</li>
49
<li>MIN - возвращает минимальное значение численного поля или первую строку по алфавиту</li>
49
<li>MIN - возвращает минимальное значение численного поля или первую строку по алфавиту</li>
50
</ul><p>Мы рассмотрели только основные функции языка SQL, а с полным списком вы можете ознакомиться в<a>документации</a>.</p>
50
</ul><p>Мы рассмотрели только основные функции языка SQL, а с полным списком вы можете ознакомиться в<a>документации</a>.</p>