我应该将截断值与平均值进行比较。在我的表中,我有2个日期,order_date&发货日期;我使用trunc(ship_date - order_date)来获取物品运送所需的天数。现在我想将这个时间的平均值与我从trunc()
函数得到的值进行比较,如果trunc()
函数更大,那么我只想显示结果。
这是我到目前为止所提出的,感谢任何帮助。
select order_id,
order_date,
trunc(ship_date-order_date) as shipping_time
from product_order
where (trunc(ship_date-order_date) > Avg(trunc(ship_date-order_date)));
当我这样做时,我收到此错误:
ORA-00934:此处不允许使用群组功能
答案 0 :(得分:3)
这是一个基本问题。这不是trunc
问题,而是经典的“比较整个表格(或子集)上的average
值”。
一种经典的方法是将avg放在一个返回标量的单独查询中:
select
order_id,
order_date,
trunc(ship_date-order_date) as shipping_time
from product_order
where
trunc(ship_date-order_date) > (select avg(trunc(ship_date-order_date))
from product_order);
另一种方法是(使用分析函数):
select *
from(
select
order_id,
order_date,
trunc(ship_date-order_date) as shipping_time
avg(trunc(ship_date-order_date)) over() as avgshipping
from product_order
)
where shipping_date > avgshipping;