SQL: Взвешенное среднее и агрегация показателей — Общий средний чек через агрегаты категорий

Практическая задача по SQL на тему «Взвешенное среднее и агрегация показателей». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.

Общий средний чек через агрегаты категорий

Что уже дано

Уже заполнена orders(order_id INTEGER PRIMARY KEY,category_id INTEGER NOT NULL,amount INTEGER NOT NULL). ID положительные INTEGER; order_id уникален. amount — целые копейки от 0 до 2 000 000 000 без NULL. В таблице от 0 до 1000 строк; суммы помещаются в 64-битный INTEGER. Разные заказы с одинаковой суммой учитываются отдельно.

Что нужно сделать

Руководителю нужен общий средний чек по всем заказам компании, независимо от категории. Каждый заказ должен иметь одинаковый вес в этом показателе, даже если число заказов разных категорий сильно различается. Верните средний размер заказа в копейках, округлённый до двух знаков после запятой.

Ввод и вывод

Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 1 столбцов в указанном порядке и с этими именами: overall_avg_check. overall_avg_check — REAL либо NULL. Сортировка: единственная строка. Даже пустая orders даёт одну строку; при отсутствии заказов показатель NULL, а не 0. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.

Пример

Подготовка данных
INSERT INTO orders VALUES (1,1,1000),(2,2,100),(3,2,100),(4,2,100),(5,2,100),(6,2,100),(7,2,100),(8,2,100),(9,2,100),(10,2,100);
Вывод
190.0
РешениеSQL · SQLite

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи