SELECT MONTH(LESSONDATETIME),YEAR(LESSONDATETIME),COUNT(*)
FROM LESSON
WHERE YEAR(LESSONDATETIME) AND CLASSID=102
GROUP BY MONTH (LESSONDATETIME)
ORDER BY 1
Всем спасибо разобрался
select
to_char(LESSONDATETIME,'MM'),to_char(LESSONDATETIME,'YYYY'),count(LESSONDATETIME)
FROM LESSON
WHERE to_char(LESSONDATETIME,'YYYY')=2017
having
count(LESSONDATETIME) > 0
group by
to_char(LESSONDATETIME,'MM'),to_char(LESSONDATETIME,'YYYY')
order by
to_char(LESSONDATETIME,'MM') asc;
Для правильного вопроса надо знать половину ответа
По стандарту SQL при группировке все выбираемые поля должны быть агрегатными функциям или полями, по которым производится группировка.
У вас YEAR(LESSONDATETIME) не подходит ни под то, ни под то условие.
WHERE YEAR(LESSONDATETIME)чему равно? Поэтому нужно каждое условие брать в скобки.
SELECT YEAR(LESSONDATETIME), MONTH(LESSONDATETIME), COUNT(*)
FROM LESSON
WHERE (CLASSID = 102)
GROUP BY YEAR(LESSONDATETIME), MONTH(LESSONDATETIME)
HAVING YEAR(LESSONDATETIME) = 2017
ORDER BY 1, 2