Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Добрый вечер ! Прошу помочь в решении задачи.

Влад Ученик (223), на голосовании 1 год назад
Для каждого месяца каждого года посчитайте уникальных пользователей, оформивших хотя бы один заказ в этот месяц. Значение месяца приведите к типу date.
Вот мой код:

SELECT DATE_TRUNC('month', order_date):: DATE AS month,
COUNT(DISTINCT order_id) AS unique_users

FROM northwind.orders
GROUP BY 1

При проверке всплывает ошибка: "Полученный результат не совпадает с ожидаемым"
Помогите найти ошибку !
Спасибо за помощь !
Голосование за лучший ответ
Матвей Гришин Гуру (2556) 1 год назад
В вашем запросе вы считаете количество уникальных заказов (COUNT(DISTINCT order_id)), а не уникальных пользователей. Чтобы посчитать уникальных пользователей, нужно использовать поле customer_id. Также необходимо добавить условие, чтобы выбрать только тех пользователей, которые сделали хотя бы один заказ в этом месяце.

Вот исправленный код запроса:

sql
Copy code
SELECT DATE_TRUNC('month', order_date):: DATE AS month,
COUNT(DISTINCT customer_id) AS unique_users
FROM northwind.orders
WHERE order_date >= DATE_TRUNC('month', order_date)
GROUP BY 1
Здесь мы используем функцию DATE_TRUNC для приведения даты заказа к месяцу, затем считаем количество уникальных пользователей (COUNT(DISTINCT customer_id)), которые оформили хотя бы один заказ в этом месяце. Также мы добавляем условие WHERE order_date >= DATE_TRUNC('month', order_date), чтобы выбрать только те заказы, которые были оформлены в этом месяце.
Макс Прохоров Знаток (293) 1 год назад
Ваш запрос считает количество уникальных заказов по месяцам, а не уникальных пользователей. Для решения этой задачи нужно изменить код запроса вот так:

SELECT DATE_TRUNC('month', order_date):: DATE AS month,
COUNT(DISTINCT customer_id) AS unique_users
FROM northwind.orders
GROUP BY 1

Теперь мы считаем количество уникальных пользователей (customer_id) по месяцам.
Похожие вопросы