2014-11-21 2 views
1

У меня есть таблица MySql с полем:Как суммировать значения в таблице по месяцам?

id - primary key 
values - some double values 
dt = datetime 

Эта таблица содержит много записей. Каждая запись в таблице соответствует одному дню, который записывается в dt.

Как получить сумму значений по месяцам с какой-либо даты?

Например, я хочу получить значения с указанного дня. Я просто отправлю запрос в таблицу

SELECT `values` FROM `some_table` WHERE `dt` >= '2014-11-21 21:26:00' LIMIT 7 

Здесь я должен суммировать значения в днях за каждый месяц.

Как сделать такой запрос?

ответ

1

Использование EXTRACT. Затем вы можете группировать год и месяц и получать для них сумму значений.

SELECT 
    EXTRACT(MONTH FROM dt) as month, 
    EXTRACT(YEAR FROM dt) as year, 
    SUM(values) as total 
FROM 
    some_table 
GROUP BY 
    month, 
    year 
ORDER BY 
    year DESC, 
    month DESC 
0

Вы можете извлечь год и месяц от столбца даты, используя DATE_FORMAT() функцию, а затем вы должны использовать GROUP BY запрос:

SELECT 
    DATE_FORMAT(`dt`, '%Y-%m') AS year_month, 
    SUM(values) AS total 
FROM 
    some_table 
WHERE 
    `dt` >= '2014-11-21 21:26:00' 
GROUP BY 
    DATE_FORMAT(`dt`, '%Y-%m') 
Смежные вопросы