Проблема в том, что в вашем операторе SELECT
есть столбец, который не агрегирован и не включен в предложение GROUP BY
(login_date
):
SELECT TO_CHAR(LOGIN_DATE, 'Month') As "Month",
login_date,
^^^^^^^^^^^
Count(TO_CHAR(LOGIN_DATE, 'Month'))
from Product
group by TO_CHAR(LOGIN_DATE, 'Month')
Я подозреваю, что вы хотите что-то более похожее на следующее (помните, что COUNT(*)
более интуитивно понятен, чем Count(TO_CHAR(LOGIN_DATE, 'Month'))
- и вам также не придется беспокоиться о случаях, когда login_date
равен NULL):
SELECT TO_CHAR(login_date, 'Month YYYY'), COUNT(*)
FROM product
GROUP BY TO_CHAR(login_date, 'Month YYYY');
Обратите внимание, что я также включил год в маску даты для TO_CHAR()
- в противном случае вы рискуете объединиться вместе за два месяца (скажем, январь 2016 года и январь 2017 года). Лично я бы использовал TRUNC(login_date, 'MONTH')
(это вернет первое число месяца) и оставил бы форматирование клиенту:
SELECT TRUNC(login_date, 'MONTH'), COUNT(*)
FROM product
GROUP BY TRUNC(login_date, 'MONTH');
Надеюсь, это поможет.