Я настоятельно рекомендую написать такую логику, если предположить, что вы имеете в виду апрель 2019 года, а не все апрели с течением времени:
select sum(t.price)
from t
where t.date >= '2019-04-01' and
t.date < '2019-05-01';
Когда вы используете функцию типа month()
для столбца, это почтивсегда предотвращает использование индексов на столбце.Прямые сравнения все же хороши.