Условная сумма () на основе месяца даты

#mysql #sql #netbeans

#mysql #sql #netbeans

Вопрос:

Я загружаю некоторые данные

 ID  |Price | Date 
01  | 100  | 2019-04-11
02  |200  | 2019-04-12
03  |300  | 2019-05-10
  

Как я могу получить СУММУ цены только за апрель МЕСЯЦ (4)?

Комментарии:

1. Просто используйте WHERE предложение, которое выбирает нужный вам месяц.

Ответ №1:

Я настоятельно рекомендую написать логику следующим образом, предполагая, что вы имеете в виду апрель 2019 года, а не все апреля с течением времени:

 select sum(t.price)
from t
where t.date >= '2019-04-01' and
      t.date < '2019-05-01';
  

Когда вы используете функцию, подобную month() для столбца, это почти всегда предотвращает использование индексов в столбце. Однако прямые сравнения хороши.

Ответ №2:

это будет работать:

 select sum(a.Price),month(a.Date)
from Table1 a
where month(a.Date)=4
group by month(a.Date);
  

проверьте:http://sqlfiddle.com /#!9/cfe06/4

вы также можете создать функциональный индекс на основе месяца (a.Date) для более быстрой обработки, как упоминал ГордонЛинофф!!!