Перейти к содержимому
TelegramGitHub

Агрегатные функции

Средний уровень SQL учит считать итоги по данным и соединять таблицы. Первые уроки используют таблицу tutorial.aapl_historical_stock_price. Это дневные цены акций Apple за 2000–2014 годы.

Задачи здесь сложнее, чем на базовом уровне. У многих задач есть несколько верных решений. Решение из курса — это пример, а не единственный ответ.

Агрегатная функция берёт много строк и возвращает одно значение. Она считает итог по столбцу.

ФункцияЧто делает
COUNTСчитает строки
SUMСкладывает значения
MINНаходит наименьшее значение
MAXНаходит наибольшее значение
AVGСчитает среднее

Это то же самое, что сводная таблица в Excel. Каждой функции посвящён отдельный урок.

Арифметические операторы работают внутри одной строки:

SELECT date,
close - open AS day_change
FROM tutorial.aapl_historical_stock_price
LIMIT 5;

Агрегатные функции работают по столбцу, то есть по многим строкам сразу:

SELECT COUNT(*) AS rows_count,
MIN(low) AS lowest_price,
MAX(high) AS highest_price,
AVG(close) AS avg_close
FROM tutorial.aapl_historical_stock_price;

Запрос вернёт одну строку.

Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.

Напишите один запрос, который вернёт: число строк в таблице, первую дату и последнюю дату.

Проверка: одна строка: 3773 строки, первая дата 2000-01-03, последняя 2014-12-31.

Решение
SELECT COUNT(*) AS rows_count,
MIN(date) AS first_date,
MAX(date) AS last_date
FROM tutorial.aapl_historical_stock_price;

Напишите один запрос, который вернёт самую низкую цену low и самую высокую цену high за всё время.

Проверка: минимум 12.72, максимум 705.07.

Решение
SELECT MIN(low) AS lowest_price,
MAX(high) AS highest_price
FROM tutorial.aapl_historical_stock_price;

Напишите запрос, который посчитает общее число проданных акций (volume) и среднюю цену закрытия (close).

Проверка: сумма volume — 72665719900.

Решение
SELECT SUM(volume) AS total_volume,
AVG(close) AS avg_close
FROM tutorial.aapl_historical_stock_price;