【发布时间】:2016-02-04 13:25:04
【问题描述】:
我正在尝试为我们的订单创建一份摘要报告,但在一次查询中提取我所需的所有数据时遇到问题。
我要提取的数据:
- 小计 - 所有销售价格的总和
- delivery total - 所有订单的总和 deliveryTotal
- orders - DISTINCT orderIds 的 COUNT 个
- 数量 - 所有订购数量的总和
Orders 表(在本例中进行了简化)
| orderId | deliveryTotal | total |
|---------|---------------|-------|
| 1 | 5 | 15 |
| 2 | 5 | 15 |
| 3 | 7.50 | 27.50 |
订单商品表
| orderItemId | orderId | productId | salePrice | quantity |
|-------------|---------|-----------|-----------|----------|
| 1 | 1 | 1 | 10 | 1 |
| 2 | 2 | 1 | 10 | 1 |
| 3 | 3 | 1 | 10 | 1 |
| 4 | 3 | 2 | 10 | 1 |
我目前提取此数据的查询是
SELECT
SUM(i.salePrice * i.quantity) as subtotal,
SUM(DISTINCT o.deliveryTotal) as deliveryTotal,
COUNT(DISTINCT o.orderId) as orders,
SUM(i.quantity) as quantity
FROM orderItems i
INNER JOIN orders o ON o.orderId = i.orderId
这会产生正确的小计、订单计数和数量总和。但是当我在 17.50 之后,交货总额返回为 12.50。如果我这样做SUM(o.deliveryTotal),它将返回 25。
编辑:期望的结果
| subtotal | deliveryTotal | orders | quantity |
|----------|---------------|--------|----------|
| 40.00 | 17.50 | 3 | 4 |
【问题讨论】:
-
你能给SQL Fiddle吗?
-
@Sadikhasan 这里是sqlfiddle.com/#!9/02cb0/1
-
更新了问题并获得了期望的结果
-
此查询是否始终应用于整个表,或者您希望稍后添加
GROUP BY? -
始终是整个表(将有一个 where 语句用于在日期之间进行选择)但没有分组。
标签: mysql