2012-10-01 2 views
3

나는 잘린 값과 평균값을 비교해야합니다. 내 테이블에는 2 개의 날짜가 있습니다. order_date & ship_date; trunc (ship_date - order_date)를 사용하여 항목을 운송하는 데 걸리는 일 수를 확인합니다. 이제는 그 시간의 평균을 trunc() 함수의 값과 비교하고 trunc() 함수가 더 큰 경우 결과를 보여주고 싶습니다.trunc 값과 oracle의 평균값을 비교하는 방법

이것은 내가 지금까지 생각 해낸 것인데, 어떤 도움을 주시면 감사하겠습니다.

ORA-00934: group function is not allowed here

답변

3

이 기본적인 문제가 : 나는이 작업을 수행 할 때

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))); 

나는이 오류가 발생합니다. 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; 

고전적인 방법은 스칼라를 반환하는 별도의 쿼리의 평균을받을 것이다

관련 문제