我正在尝试创建一份订单汇总报告,但在单个查询中提取所有所需数据时遇到了问题。
我希望提取的数据包括:
- 小计 - 所有销售价格的总和
- 运费总额 - 所有订单deliveryTotal的总和
- 订单数 - DISTINCT订单号的数量
- 数量 - 所有订购数量的总和
订单表(此示例简化)
| 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 |
GROUP BY
语句? - Michael Berkowski