在 SQL 中求和
Posted
技术标签:
【中文标题】在 SQL 中求和【英文标题】:Sum distinct in SQL 【发布时间】:2019-02-06 09:07:04 【问题描述】:假设有一个 order
和 order_line
表。为了计算每个客户的收入,我使用以下查询 -
select o.customer_id, sum(o.amount) as revenue
from order o join order_line ol on o.id=ol.order_id
where ol.coupon_code is NULL
group by 1
假设coupon_code
仅在订单行级别可用,因此我们需要加入order_line
。如果一个订单可以有多个订单项,则收入总和将因加入而重复计算。
想知道是否有办法仅计算不同订单的amount
的总和。这似乎是一个常见的用例,可能有一个简单的解决方案,但我想不出来。
【问题讨论】:
向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。并且不要忘记拥有不同的 coupon_code 状态。 订单的所有 ol.coupon_code 值是否相同? 您是否要排除包含 1 个/多个 coupon_code 的订单? 【参考方案1】:使用子查询
select o.customer_id, sum(o.amount) as revenue
from "order" o join
( select distinct coupon_code,order_id from order_line
) ol on o.id=ol.order_id
where ol.coupon_code is NULL
group by o.customer_id
【讨论】:
以上是关于在 SQL 中求和的主要内容,如果未能解决你的问题,请参考以下文章