3

切り捨てられた値を平均値と比較することになっています。私のテーブルには、order_date と ship_date の 2 つの日付があります。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: ここではグループ機能は許可されていません

4

1 に答える 1

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;
于 2012-10-01T05:49:05.607 に答える