使用Oracle / SQL,我正在寻找一种方法来计算总和之后或低于指定值的不同ID的数量。例如,我需要找出去年有多少客户订购了1000美元或更多的商品,无论是一个大订单还是几个小订单。我不需要专门识别每个客户,只需找到超过此金额的客户总数。
到目前为止,我能够找到订单总数:
select sum (Order_Amount), Customer_ID
from table.orders_placed
where year = 2013
group by Customer_ID
order by Customer_ID
我也可以扩展它:
select count (dinstinct Customer_ID)
from(
select sum (Order_Amount), Customer_ID
from table.orders_placed
where year = 2013
group by Customer_ID
order by Customer_ID
)
但这只是给了我不同Customer_ID的总数。我添加的任何其他参数试图缩小“计数”给我的内容会导致错误。如何指定我想要总计$ 1,000或更多的Order_Amount?
答案 0 :(得分:1)
尝试(无需在内部查询中排序)
select count (dinstinct Customer_ID)
from(
select sum (Order_Amount) total_order_amount, Customer_ID
from table.orders_placed
where year = 2013
group by Customer_ID
) where total_order_amount > 1000
或者有
select sum (Order_Amount) total_order_amount, Customer_ID
from table.orders_placed
where year = 2013
group by Customer_ID
having sum(order_amount) > 1000
答案 1 :(得分:1)
使用HAVING
子句限制分组结果:
select sum (Order_Amount) as Total, Customer_ID
from table.orders_placed
where year = 2013
group by Customer_ID
having sum (Order_Amount) >= 1000
然后,您可以将其用作子查询来执行聚合和过滤。