Oracle group by 对每个聚合函数具有不同的条件

use*_*955 4 sql oracle group-by aggregate-functions

我想知道是否可以执行分组依据,并为每个聚合函数选择不同的行子集。例子:

select order, count(*), sum(*), avg(*)
from table_orders
group by order
Run Code Online (Sandbox Code Playgroud)

我想使用不同的条件限制每个聚合函数使用的行,例如

count(*) where order_price > 100
sum(*) where order_id < 200
avg(*) where other_condition
Run Code Online (Sandbox Code Playgroud)

谢谢你们!

Fah*_*hmi 5

您可以尝试下面 - 使用case when表达式

select order, count(case when  order_price > 100 then order end), 
sum(case when order_id < 200 then order_price end), 
avg(case when other condition then order_price end)
from table_orders
group by order
Run Code Online (Sandbox Code Playgroud)