.Задача У вас SQL база с таблицами магазина, который существует много лет:
1) Users(userId, age)
2) Purchases (purchaseId, userId, itemId, date)
3) Items (itemId, price).
Напишите SQL запросы для расчета следующих метрик: Б) в каком месяце года выручка от пользователей в возрастном диапазоне 35+ самая большая . Работодатель предупреждает стоит оставить ремарку, что ChatGPT только решает это задание с логическими ошибками и покрывает далеко не все возможные кейсы. В чем подвох? я так добавила что Для учета того, что один и тот же userId может совершать несколько покупок в месяц, нужно сгруппировать покупки по месяцам и пользователям, а затем выбрать месяц с наибольшей выручкой. Что то еще? Помогите пожалуйста. МОЙ КОД: SELECT year, month, MAX(monthly_revenue) AS max_revenue
FROM (
SELECT
YEAR(P.date) AS year,
MONTH(P.date) AS month,
U.userId,
SUM(I.price) AS monthly_revenue
FROM Purchases P
JOIN Users U ON P.userId = U.userId
JOIN Items I ON P.itemId = I.itemId
WHERE (YEAR(CURRENT_DATE) - YEAR(U.date_of_birth)) >= 35
GROUP BY YEAR(P.date), MONTH(P.date), U.userId
) AS UserMonthlyPurchases
GROUP BY year, month
ORDER BY max_revenue DESC
LIMIT 1;
Попробуй что-то вроде такого: select date_part('month', p."date")::int as "MonthNumber" from Purchases p join Users u on u.userid = p.userid join items i on i.itemid = p.itemid where date_part('year', p."date") = 2023 -- где год 2023 and (p."date"::timestamp - u.date_of_birth::timestamp) >= interval '35 years' -- и на момент покупки было 35+ лет group by date_part('month', p."date")::int -- группируем по номеру месяца, чтобы посчитать сумму покупок по месяцам order by sum(i.price) desc -- сортируем по убыванию сумму покупок за месяц limit 1; -- выбираем верхнюю строку с номером месяца с самыми большими тратами
Обсуждают сегодня