按天聚合MySQL行

按天聚合MySQL行,mysql,Mysql,我有一个MySQL表,如下所示: Payments +----+---------------------+---------+ | id | date (sorted DESC) | payment | +----+---------------------+---------+ | 5 | 2010-03-26 00:00:01 | 100.00 | | 4 | 2010-03-19 00:00:02 | 55.12 | | 3 | 2010-03-19 00:00:01 |

我有一个MySQL表,如下所示:

Payments
+----+---------------------+---------+
| id | date (sorted DESC)  | payment |
+----+---------------------+---------+
|  5 | 2010-03-26 00:00:01 |  100.00 |
|  4 | 2010-03-19 00:00:02 |   55.12 |
|  3 | 2010-03-19 00:00:01 |   20.00 |
|  2 | 2010-03-12 00:00:02 |  320.00 |
|  1 | 2010-03-12 00:00:01 |   64.56 |
+----+---------------------+---------+
如何按天累计总付款?

每周都会将付款插入表中,但它们并不总是与您看到的时间完全相同。是否可以在MySQL中以本机方式进行日间聚合

预期的结果将是:

+------------+----------------+
| date       | total payments |
+------------+----------------+
| 2010-03-26 |         100.00 |
| 2010-03-19 |          75.12 |
| 2010-03-12 |         384.56 |
+------------+----------------+

提前感谢。

您可以做两件事,将datetype更改为date,因此只需存储日期(在您的情况下,这可能是不可能的)。 或者可以通过重新设置日期值进行分组,使其仅为日期

select date(date), sum(payment)
from payments
group by date(date)
order by date(date) desc

您可以做两件事,将datetype更改为date,因此只存储日期(在您的情况下,这可能是不可能的)。 或者可以通过重新设置日期值进行分组,使其仅为日期

select date(date), sum(payment)
from payments
group by date(date)
order by date(date) desc

您可以在日期上通过函数调用进行分组,因此将完整的datetime转换为日期部分,并按此进行分组,只要日期在select中,它就应该是合法的

您可以通过日期上的函数调用进行分组,因此将完整日期时间转换为日期部分,并按此进行分组,只要日期在select中,它就应该是合法的

SELECT CONVERT(VARCHAR(10), date , 102) as date,sum(payment ) as total_payment
FROM Payments
GROUP BY  CONVERT(VARCHAR(10), date , 102) 
ORDER BY  CONVERT(VARCHAR(10), date , 102)
应该可以


应该可以

在您的示例中,您按天进行聚合,这比“给几秒钟或几秒钟”容易得多,而且定义得更好。我明白您的意思。编辑以使其更清晰。在您的示例中,您按天进行聚合,这比“几秒钟”更简单,定义也更好。我明白您的意思。编辑以使其更清晰。+1,如果我知道按日期聚合就可以了,这可能是我的答案(请参见对问题的评论);-)+1,如果我知道按日期聚合就可以了,这可能是我的答案(请参见对问题的评论);-)