SQL — это больше, чем просто язык запросов. Это практически язык программирования, хотя и очень специфичный. Как и в других языках, здесь есть функции, которые незаменимы в конкретных задачах.
Например, при реализации пагинации обычно показывают общее число страниц. Но чтобы его узнать, нужно посчитать число строк в конкретной таблице. С помощью обычной выборки это сделать не получится, а вот функции под эту задачу как раз подходят.
Функции, которые что-то считают по таблице, называются агрегатными. Например, к ним относятся функции, связанные с нахождением числа записей, суммы значений, среднего арифметического и многих других параметров. В этом уроке мы рассмотрим только самые популярные функции, а с полным списком вы можете ознакомиться в документации.
COUNT
COUNT()
— функция, которая считает количество записей в выборке. Обратите внимание, что она считает именно в выборке, а не в таблице:
SELECT COUNT(*) FROM users WHERE birthday < '2018-10-21';
count
-------
91
(1 row)
Такой запрос вернет ровно одну запись с одним значением — количеством строк по указанному условию.
COUNT()
относится к агрегатным функциям. У нее есть несколько форм, в которых она может:
- Считать количество строк, если аргументом функции является
*
- Считать количество строк, в которых поле НЕ равно
NULL
, если в нее передать имя конкретного поля
MAX и MIN
Функции MAX
и MIN
помогают находить максимальное и минимальное значение соответственно:
SELECT MAX(birthday) FROM users WHERE gender = 'male';
max
------------
2018-12-06
(1 row)
SELECT MIN(birthday) FROM users WHERE gender = 'female';
min
------------
2017-12-08
(1 row)
SUM
Функция SUM
находит сумму всех значений:
-- Получить сумму всех заказов из таблицы orders,
-- которые были совершены в 2016 году
SELECT SUM(amount) FROM orders
WHERE created_at BETWEEN '2016-01-01' AND '2016-12-31';
AVG
Функция AVG
находит среднее арифметическое всех значений:
-- Получить среднюю стоимость всех заказов из таблицы orders,
-- которые были совершены в 2016 году.
SELECT AVG(amount) FROM orders
WHERE created_at BETWEEN '2016-01-01' AND '2016-12-31';
В таблице ниже вы увидите, как это происходит:
Теперь вы знаете, как работают самые популярные функции в SQL, что облегчит вам работу с данными.
Выводы
В этом уроке вы узнали больше об агрегатных функциях. Они незаменимы в конкретных задачах, например, при реализации пагинации, подсчете строк в конкретной таблице. В этом уроке мы рассмотрели только самые популярные функции, а с полным списком вы можете ознакомиться в документации.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»