TGViewer
Симулейтив Симулейтив @simulative_official · 7.44K subscribers
Post #2653 1.53K
Разбираем задачу по анализу продаж в интернет-магазине электроники

Условия задачи и вопрос тут, а мы делимся решением 👇

Правильный ответ: A (ставьте 🎉, если решили верно)

SELECT 
category,
SUM(amount) AS total_revenue
FROM
orders
WHERE
order_date >= '2024-03-01'
AND order_date < '2024-04-01'
AND is_returned = FALSE
GROUP BY
category
ORDER BY
total_revenue DESC;


Почему верно:
➖ Фильтр по дате: >= '2024-03-01' AND < '2024-04-01' — включает весь март 2024, не включает апрель, надёжно для DATE и TIMESTAMP.
➖ Фильтр по возвратам: is_returned = FALSE — включает только невозвращённые, исключает TRUE и NULL.
➖ Группировка: GROUP BY category — по условию задачи.
➖ Сортировка: ORDER BY total_revenue DESC — по убыванию выручки.
➖ Результат соответствует задаче.

B — ошибка: неправильное использование HAVING

SELECT 
category,
SUM(amount) AS total_revenue
FROM
orders
WHERE
order_date >= '2024-03-01'
AND order_date < '2024-04-01'
GROUP BY
category
HAVING
is_returned = FALSE
ORDER BY
total_revenue DESC;

➖ Ошибка: HAVING is_returned = FALSE — неправильно, потому что HAVING используется только для агрегатных функций (например, HAVING SUM(amount) > 1000). is_returned — обычное поле, а не агрегат.
➖ СУБД (например, PostgreSQL) выдаст ошибку, запрос не выполнится, и задача не будет решена.

C — ошибка. Здесь допущены логические и смысловые ошибки

SELECT 
category,
SUM(amount) AS total_revenue
FROM
orders
WHERE
EXTRACT(MONTH FROM order_date) = 3
AND is_returned IS DISTINCT FROM TRUE
GROUP BY
category
ORDER BY
total_revenue DESC;


➖ Нет фильтра по году: EXTRACT(MONTH FROM order_date) = 3 — включает все марты всех лет, а не только 2024.
➖ Неправильная обработка NULL: is_returned IS DISTINCT FROM TRUE — включает NULL, т. е. заказы, статус которых неизвестен, как если бы они не были возвращены.
➖ NULL IS DISTINCT FROM TRUE — TRUE-строка попадает в сумму.
➖ Результат: завышенная выручка, включая заказы из других лет и с неизвестным статусом.

📊 Simulative
  • 🎉 18
  • 🔥 9
  • ❤ 2
More from @simulative_official
  1. Oct 13, 2026💻💻💻💻💻 Падение продаж: как аналитик превращает размытый вопрос в расследование? Руково…
  2. Oct 13, 2026💻 Почему ваш SQL-запрос выполняется не так, как вы его написали? Кажется логичным, что ба…
  3. Oct 12, 2026#проанализировали_и_поняли
  4. Oct 11, 2026❗️ Перенос вебинара с Евгением Буториным Друзья, к сожалению, по техническим причинам пере…
  5. Oct 9, 2026💻💻💻💻💻 Как выбрать своё направление в аналитике? Решаешь войти в аналитику, открываешь…
  6. Oct 9, 2026🔍 Найдите пять проблем в этом выводе Привет! На связи Ева Панкратова, ментор курса «Анали…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →