我只想计算唯一 ID 的总和和计数。
SELECT COUNT(orders.id), SUM(orders.total), SUM(orders.shipping) FROM "orders"
INNER JOIN "designer_orders" ON "designer_orders"."order_id" = "orders"."id"
WHERE (designer_orders.state = 'pending' OR
designer_orders.state = 'dispatched' OR
designer_orders.state = 'completed')
- 仅对唯一订单 ID 执行此操作。
- 仅当 orders.id 唯一时才添加 orders.total。运输也是如此。
- 避免添加重复项。
例如orders
表内部加入了designer_orders
表:
OrderId Total Some designer order column
1 1000 2
1 1000 3
1 1000 5
2 100 7
3 133 8
4 1000 10
4 1000 20
在这种情况下:
- 订单数应为 4。
- 订单总数应为 2233。
架构:
- 一个订单有多个设计师订单。
- 一个设计师订单只有一个订单。
最佳答案
这样试试
SELECT COUNT(o.id) no_of_orders,
SUM(o.total) total,
SUM(o.shipping) shipping
FROM orders o JOIN
(
SELECT DISTINCT order_id
FROM designer_orders
WHERE state IN('pending', 'dispatched', 'completed')
) d
ON o.id = d.order_id
这是 SQLFiddle 演示
关于SQL SUM,COUNT 仅用于唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545781/