Агрегатные функции
Средний уровень SQL учит считать итоги по данным и соединять таблицы. Первые уроки используют таблицу tutorial.aapl_historical_stock_price. Это дневные цены акций Apple за 2000–2014 годы.
Задачи здесь сложнее, чем на базовом уровне. У многих задач есть несколько верных решений. Решение из курса — это пример, а не единственный ответ.
Что такое агрегатная функция
Заголовок раздела «Что такое агрегатная функция»Агрегатная функция берёт много строк и возвращает одно значение. Она считает итог по столбцу.
| Функция | Что делает |
|---|---|
COUNT | Считает строки |
SUM | Складывает значения |
MIN | Находит наименьшее значение |
MAX | Находит наибольшее значение |
AVG | Считает среднее |
Это то же самое, что сводная таблица в Excel. Каждой функции посвящён отдельный урок.
Строки и столбцы
Заголовок раздела «Строки и столбцы»Арифметические операторы работают внутри одной строки:
SELECT date, close - open AS day_changeFROM tutorial.aapl_historical_stock_priceLIMIT 5;Агрегатные функции работают по столбцу, то есть по многим строкам сразу:
SELECT COUNT(*) AS rows_count, MIN(low) AS lowest_price, MAX(high) AS highest_price, AVG(close) AS avg_closeFROM tutorial.aapl_historical_stock_price;Запрос вернёт одну строку.
Практика
Заголовок раздела «Практика»Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.
Задание 1
Заголовок раздела «Задание 1»Напишите один запрос, который вернёт: число строк в таблице, первую дату и последнюю дату.
Проверка: одна строка: 3773 строки, первая дата 2000-01-03, последняя 2014-12-31.
Решение
SELECT COUNT(*) AS rows_count, MIN(date) AS first_date, MAX(date) AS last_dateFROM tutorial.aapl_historical_stock_price;Задание 2
Заголовок раздела «Задание 2»Напишите один запрос, который вернёт самую низкую цену low и самую высокую цену high за всё время.
Проверка: минимум 12.72, максимум 705.07.
Решение
SELECT MIN(low) AS lowest_price, MAX(high) AS highest_priceFROM tutorial.aapl_historical_stock_price;Задание 3
Заголовок раздела «Задание 3»Напишите запрос, который посчитает общее число проданных акций (volume) и среднюю цену закрытия (close).
Проверка: сумма volume — 72665719900.
Решение
SELECT SUM(volume) AS total_volume, AVG(close) AS avg_closeFROM tutorial.aapl_historical_stock_price;