Sobes.tech
Назад к вопросам
Junior
9

Анализ продаж по категориям товаров в розничном магазине Вы работаете аналитиком в розничном магазине. Ваша задача — сформировать отчет о продажах по категориям товаров с расчетами: • общее количество проданных единиц в категории (total_units_sold); • суммарная выручка по категории, учитывая скидки, где скидка применяется как unit_price × units_sold × (1 − discount/100). Если скидка отсутствует (NULL), считать скидку равной 0%. Округлить до двух знаков после запятой; • среднее количество проданных единиц на одну продажу (avg_units_per_sale), округленное до двух знаков после запятой; • долю продаж без скидки (no_discount_share) — количество продаж с NULL или 0% скидкой, деленное на общее количество продаж в категории, округленную до трех знаков после запятой. Результат сначала отсортируйте по убыванию total_revenue, затем по возрастанию среднего количества единиц в продаже (avg_units_per_sale), в конце — по названию категории в алфавитном порядке. Формат ввода Таблица sales: • sale_id (int) — уникальный идентификатор продажи • product_id (int) — идентификатор товара • category (text) — категория товара • sale_date (timestamp) — дата и время продажи • units_sold (int) — количество проданных единиц • unit_price (numeric) — цена за единицу товара • discount (numeric) — скидка на товар в процентах, может быть NULL Колонка discount может содержать пропуски. Формат вывода Запрос должен вернуть таблицу с полями в таком порядке: • category (text) — категория товара • total_units_sold (int) — общее количество проданных единиц товаров в данной категории • total_revenue (numeric) — общая выручка по категории с учетом скидок, округленная до двух знаков после запятой • avg_units_per_sale (numeric) — среднее количество единиц товара в одном заказе, округленное до двух знаков после запятой • no_discount_share (numeric) — доля продаж без скидок в категории (значение от 0 до 1), округленная до трех знаков после запятой Результат сортируется сначала по убыванию total_revenue, затем по возрастанию среднего количества единиц в продаже (avg_units_per_sale), в конце — по названию категории в алфавитном порядке.

Компании, где спрашивали
01.tech

Ответ от нейросети

sobes.tech AI

sql SELECT category, SUM(units_sold) AS total_units_sold, ROUND(SUM(unit_price * units_sold * (1 - COALESCE(discount, 0) / 100.0)), 2) AS total_revenue, ROUND(AVG(units_sold), 2) AS avg_units_per_sale, ROUND( SUM(CASE WHEN discount IS NULL OR discount = 0 THEN 1 ELSE 0 END)::numeric / COUNT(*), 3 ) AS no_discount_share FROM sales GROUP BY category ORDER BY total_revenue DESC, avg_units_per_sale ASC, category ASC;