如何根据月份分组MySql行?

und*_*ack 2 php mysql group-by

我有一个表格,其中包含日期时间(格式:'Ymd H:i:s')'已创建'字段和每行中的'金额'(整数)字段.现在我想找出去年的月份总金额.我怎样才能做到这一点?

编辑

我做了一个编辑来澄清实际问题.所以基本上我想知道每个月的总金额,但仅限于去年.

EDIT2

去年意味着过去365天.所以在某个地方我要考虑"当天"?

EDIT3

我的坏,实际上去年是过去12个月.所以天数将在336到365之间.

Mar*_*ers 8

试试这个(更新以回答你的"edit3"):

SELECT
    YEAR(created) as year,
    MONTH(created) AS month,
    SUM(amount) AS total_amount
FROM table1
WHERE created
    BETWEEN DATE(NOW()) - INTERVAL (DAY(NOW()) - 1) DAY - INTERVAL 11 MONTH
    AND NOW()
GROUP BY YEAR(created), MONTH(created)
ORDER BY YEAR(created), MONTH(created);
Run Code Online (Sandbox Code Playgroud)

示例结果(2010年4月运行时):

year  month  total_amount
2009  5      26
2010  1      20
Run Code Online (Sandbox Code Playgroud)

另请注意,根本不会返回没有条目的月份(而不是以total_amount = 0返回).

测试数据:

CREATE TABLE table1 (created datetime NOT NULL, amount INT NOT NULL);
INSERT INTO table1 (created, amount) VALUES
('2010-01-01 13:56:23', 5),
('2010-01-04 13:56:23', 15),
('2009-05-04 13:56:23', 26);
Run Code Online (Sandbox Code Playgroud)