php - 如何根据月份对 MySql 行进行分组?

标签 php mysql group-by

我有一个表格,每行都有一个日期时间(格式:'Y-m-d H:i:s')'created' 字段和'amount'(整数)字段。现在我想找出去年每月的总“金额”。我该怎么做?

编辑

我进行了编辑以澄清实际问题。所以基本上我想知道每个月的总“金额”,但仅限于去年。

EDIT2

去年是指过去 365 天。所以我必须在某个地方考虑​​“当天”?

EDIT3

我的错,实际上去年是最后 12 个月。所以天数将在 336 到 365 之间。

最佳答案

试试这个(更新以回答您的“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);

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

year  month  total_amount
2009  5      26
2010  1      20

另请注意,完全不会返回没有条目的月份(而不是返回 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);

关于php - 如何根据月份对 MySql 行进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580551/

相关文章:

mysql - 进行聚合查询的不同方法

mysql - 使用内部联接和分组依据

php - PECL/Memcache 和 PECL/Memcached

php - 使用 PHP 的 MYSQL 中的 UPDATE 子句可以在一个查询中更新多条记录吗?

php - 如何制作一个从 MySQL 读取用户名的聊天框?

mysql - 如何在mysql中加载数据时解决这个错误?

mysql - 选择具有不同值和最大日期的行

javascript - 在导航栏中单击时不会打开 Bootstrap 菜单

php - 从用户输入的选定日期在 MySQL 中始终存储为 "1970"

php - 是否可以在服务器上运行 AfterEffects 以使用动态图像动态渲染视频?