总和后分组或计数

时间:2014-03-18 19:14:32

标签: sql oracle

使用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?

2 个答案:

答案 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

然后,您可以将其用作子查询来执行聚合和过滤。

相关问题