如何在每个月分组时获取最近3个月的记录

问题描述 投票:1回答:3

请问如何在过去的3个月内对我的MySQL表中的记录求和,但是按月分组。

我想要这样的东西:

select SUM(amount) from table where.....
group by month

我正在做以下但它没有返回任何结果

SELECT MONTHNAME(a.created_at) MONTH, YEAR(a.created_at) YEAR, SUM(a.credit) as credit, SUM(a.debit)
        FROM telco_transactions AS a
        WHERE a.telco_id = '1' and DATE(a.created_at) = DATE_ADD(NOW(), INTERVAL -3 MONTH)
        GROUP BY MONTHNAME(a.created_at), YEAR(a.created_at);
mysql sql
3个回答
0
投票

我会试试这个:

SELECT SUM(records) 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 
GROUP BY DATEPART(MONTH, Date_Column)

0
投票
select T.date_time, SUM(T.amount) from (
    -> select * from TEST_TABLE where date_time >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH) and date_time <= CURDATE())
    -> as T GROUP BY MONTH(T.date_time);

表test_table看起来像

+------------+--------+
| date_time  | amount |
+------------+--------+
| 2017-12-24 |     30 |
| 2017-09-24 |     30 |
| 2017-12-04 |     30 |
| 2017-11-24 |     30 |
| 2017-11-09 |     30 |
| 2017-10-24 |     30 |
+------------+--------+

并且查询的输出看起来像

+------------+---------------+
| date_time  | SUM(T.amount) |
+------------+---------------+
| 2017-09-24 |            30 |
| 2017-10-24 |            30 |
| 2017-11-24 |            60 |
| 2017-12-24 |            60 |
+------------+---------------+

0
投票

我找到了答案

SELECT MONTHNAME(a.created_at) as tmonth, YEAR(a.created_at) as tYear,
        SUM(a.credit) as credit, SUM(a.debit)
        FROM telco_transactions AS a
        WHERE a.telco_id = '1' and DATE(a.created_at) BETWEEN DATE(NOW())-INTERVAL 3 MONTH AND DATE(NOW())
        GROUP BY MONTHNAME(a.created_at), YEAR(a.created_at);
© www.soinside.com 2019 - 2024. All rights reserved.