日期范围内的 MySQL SUM 列

标签 mysql sum

如何对每个日期范围内的列求和。

我需要对价格列和折扣列求和,然后根据日期行得出它们。

在本例中,我选择了 39order_id,请参见下表。

这是我的订单表:

id      order_id        price       price_disc      date_transaction
1       39              537         25              2014-03-28 11:44:40
2       39              323         0               2014-03-28 16:12:42
3       38              309         11              2014-03-29 15:47:48
4       39              223         16              2014-03-29 19:22:28
5       37              304         19              2014-03-30 23:31:34
6       38              109         7               2014-03-31 09:12:16
7       38              223         0               2014-03-31 17:00:35
8       38              116         9               2014-04-01 20:32:27
9       38              296         0               2014-04-02 16:45:00
10      39              482         20              2014-04-03 12:42:03
11      39              371         12              2014-04-03 20:02:10
12      36              293         13              2014-04-03 21:09:45
13      39              299         0               2014-04-03 23:28:10
14      39              403         22              2014-04-04 08:06:13

我想要这样的结果:

date_transaction    total_price     total_price_disc
2014-03-28          860             25
2014-03-29          223             16
2014-03-30          0               0
2014-03-31          0               0
2014-03-01          0               0
2014-03-02          0               0
2014-03-03          1152            32
2014-03-04          403             22
2014-03-05          0               0
2014-03-06          0               0

这是我尝试过的方法,但只获取 date_transaction 和 total_price 的结果。

SELECT
DISTINCT DATE_FORMAT(date_transaction, '%Y-%m-%d') AS date_transaction,
COALESCE(SUM(price), 0) AS total_price
FROM orders
WHERE order_id = 39
AND date_transaction BETWEEN '2014-03-28' AND '2014-04-06' + INTERVAL 1 DAY
GROUP BY DATE_FORMAT(date_transaction, '%Y-%m-%d')
ORDER BY date_transaction ASC;

最佳答案

使用 DATE() 函数获取日期。

SELECT
DISTINCT DATE(date_transaction) AS date_transaction,
SUM(price) AS total_price,
SUM(price_disc) AS total_price_disc
FROM orders
WHERE order_id = 39
AND DATE(date_transaction) BETWEEN '2014-03-28' AND '2014-04-06' + INTERVAL 1 DAY
GROUP BY DATE(date_transaction)
ORDER BY DATE(date_transaction) ASC;

关于日期范围内的 MySQL SUM 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134656/

相关文章:

MySQL 在行 SUM 之前选择连接和列乘法

python - Groupby pandas 按特定公式

MySQL:如何合并三个表

java - 从数据库中获取数据的java代码是什么

php - PDO prepare() 错误 Php/Mysql

mysql - 如何正确总结为 “Order Time” + “leave Time” - mysql (添加小时而不是秒)

Mysql计算选定行的百分比

mysql - mysql中特定条件的总和

MySql 根据列标准明确连接行

mysql - 将数据库导入本地主机时,出现错误 #1064 - 您的 SQL 语法有误;