Получение общей суммы за предыдущие 3 месяца

0

Мне нужно получить общую сумму отметки за предыдущие 3 месяца. то есть, если я посмотрю в апреле, я получу сумму Jan, Feb, Mar. Аналогично, когда я смотрю на Jan, это отображает общее количество предыдущего года Oct, Nov, Dec. Я использую следующий запрос

SELECT empid,
       name,
       sum(total) AS total
FROM formresult
WHERE (MONTH(date) = MONTH(now())
       OR MONTH(date) = MONTH(now()- INTERVAL 1 MONTH)
       OR MONTH(date) = MONTH(now()- INTERVAL 2 MONTH))
  AND YEAR(date) = YEAR(now())
GROUP BY empid

Но при использовании этого кода я получил 3-месячный результат, но когда я смотрю на Jan, он не отображает результат предыдущего года. Как это возможно. Помогите мне, пожалуйста

  • 0
    Какие столбцы у таблицы formresult и какого они типа?
  • 0
    id int autoinrement, empid int, имя varchar (30), всего (int), дата дата
Показать ещё 1 комментарий
Теги:

2 ответа

3
Лучший ответ

Что-то вроде следующего должно делать то, что вам нужно.

SELECT empid, name, SUM(total) AS total
FROM formresult
WHERE date BETWEEN
  DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND
  LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
GROUP BY empid

Для DATE_FORMAT() дополнительной информации см. DATE_FORMAT(), DATE_SUB() и LAST_DAY().

  • 0
    Привет, я понял, спасибо за вашу поддержку
0

Таким образом, есть несколько проблем с математикой даты, которую здесь делают. Сначала похоже, что вы получаете текущий месяц и предыдущие два месяца вместо предыдущих трех месяцев. Это дает вам текущий месяц MONTH(date) = MONTH(now()). Также вы не можете считать это в текущем году, если вы запустите это в январе, вы ожидаете получить октябрь, ноябрь и декабрь предыдущего года, однако он вернется в текущем году.

  • 0
    Да, я получил его. Но форма должна отмечаться на каждом текущем месяце. то есть. Единственный знак для Яна должен поставить сам Ян, аналогично в каждом месяце. когда я отмечаю в течение 3 месяцев, тогда я проверяю отметку только после 3 месяцев, то есть 4-го месяца. В этом случае, когда я отмечаю отметку oct nov dec, я проверяю общую отметку за январь. Но на самом деле я не знаю код для этого.
  • 0
    Похоже, ответ от @fubar - это то, что вам нужно для математики даты, вот руководство по использованию функции, использованной в этом ответе: dev.mysql.com/doc/refman/5.7/en/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню