2012-10-01 106 views
3

我應該將截斷值與平均值進行比較。在我的表中,我有2個日期,order_date & ship_date;我使用trunc(ship_date - order_date)來獲取物品運送所需的天數。現在我想比較這種時間的平均值與我從trunc()函數得到的值,如果trunc()函數大於那麼我只想顯示結果。如何將trunc值與oracle中的avg值進行比較

這是我到目前爲止,任何幫助表示讚賞。

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: group function is not allowed here

回答

3

這是一個基本問題。這不是trunc問題,而是一個經典的「比較整個表(或子集)上的值與average值」。

一個典型的方法是,以獲得平均在返回標一個單獨的查詢:

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; 
相關問題