У меня есть база данных с 3 отношениями Предложения, продукты и категории. Я пытаюсь найти день месяца с максимальным количеством предлагаемых продуктов. Мне нужно вернуть Название категории (CN), День с максимальным количеством предложений (OD) и количеством предложений (ПК).
У меня есть этот запрос:
SELECT CN, MAX(PC)
FROM
(
SELECT c.nombre as CN, EXTRACT(DAY FROM o.fecha) as OD, count(o.id_producto_ofertado) AS PC
FROM ofertas o join (categorias c JOIN productos p ON c.id = p.categoria) on o.id_producto_ofertado = p.id
GROUP BY EXTRACT(DAY FROM o.fecha), c.nombre
)
GROUP BY CN
Полагаю, это работает. Но в результате получается связь с 2 столбцами: CN & MAX (PC). Если я попытаюсь привести день (OD), потому что он мне нужен, используя:
SELECT CN, MAX(PC), OD
FROM
(
SELECT c.nombre as CN, EXTRACT(DAY FROM o.fecha) as OD, count(o.id_producto_ofertado) AS PC
FROM ofertas o join (categorias c JOIN productos p ON c.id = p.categoria) on o.id_producto_ofertado = p.id
GROUP BY EXTRACT(DAY FROM o.fecha), c.nombre
)
GROUP BY CN, OD
Затем возвращается отношение 3 столбцов: CN, MAX (PC) и OD. НО с повторением названия категории (CN), я думаю, потому что мне нужно сгруппировать по OD, чтобы извлечь также день. Итак, возврат содержит строку для каждого из 31 дня.
Мне просто нужна строка для каждого названия категории, возвращающая название категории, номер дня месяца с наибольшим количеством предложений и наибольшим количеством предложений.
Я застрял прямо сейчас, потому что я не знаю, что делать. Спасибо