Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Функции Основы реляционных баз данных

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';

В таблице ниже вы увидите, как это происходит:

Работа AVG

Теперь вы знаете, как работают самые популярные функции в SQL, что облегчит вам работу с данными.

Выводы

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


Дополнительные материалы

  1. Официальная документация

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев
Иконка программы PHP-разработчик
Профессия
с нуля
Разработка веб-приложений на Laravel
2 февраля 10 месяцев
Иконка программы Инженер по тестированию
Профессия
с нуля
Ручное тестирование веб-приложений
2 февраля 4 месяца
Иконка программы Node.js-разработчик
Профессия
с нуля
Разработка бэкенд-компонентов для веб-приложений
2 февраля 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
с нуля
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
2 февраля 16 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»