문제

판매하는 데 평균 고양이보다 오래 걸린 고양이를 나열하기 위해 쿼리를 만들고 싶습니까? 나는 5 개의 테이블이있다 :

동물, 판매, Animalordeitem, Animalorder 및 Saleanimal

동물성 테이블 : 동물성, 이름, 카테고리 (고양이, 개, 물고기)

SALEANIMAL TABLE : SaleID, AnimalID, Saleprice

판매 테이블 : Saleid, Date, Employeeid, CustomerID

AnimalOrderItem 표 : OrderId, AnimalID, 비용

Animalorder : OrderId, OrderDate, ReceivingDate, SupplierId, ShippingCost, EmployeeId

쿼리에 영향을 미치지 않는 다른 테이블이 있습니다.

나는 다음을 생각했다 ... 모든 Ex.에 대해 판매 할 일을 계산하기 위해 쿼리를 만드십시오.

[SaleDate]-[ReceiveDate] AS DaysToSell
Have the INNER JOIN built:
Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem
ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.
OrderID = AnimalOrderItem.OrderID) INNER JOIN SaleAnimal ON Animal.
AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID

위의 쿼리를 기반으로 다른 쿼리를 만듭니다

SELECT AnimalID, Name, Category, DaysToSell
WHERE Category="Cat" AND DaysToSell>
(SELECT Avg(DaysToSell)
FROM the earlier query
WHERE Category="Cat"
ORDER BY DaysToSell DESC;

쿼리를 실행 한 후 오류가 발생했습니다

ORA-00921 : 예상치 못한 SQL 명령

모든 제안! 제발

도움이 되었습니까?

해결책

쿼리는 하위 쿼리와 결합 할 수 있습니다. 예를 들어,

select *
from (
    select * 
    from mytable
) subquery

이 패턴을 문제에 적용하는 것은 매우 간단한 것 같습니다.

다른 팁

Select AVG와 일치하는 닫힌 괄호가 보이지 않습니다.

좋아, 나는 이것을 생각해 냈다 :

    SELECT AnimalID, Name, Category,
           [SaleDate]-[ReceiveDate] AS DaysToSell
    FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
           INNER JOIN SaleAnimal ON Animal.AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
    WHERE  Category = "Cat"
    AND    ([SaleDate]-[ReceiveDate]) > (SELECT AVG([SaleDate]-[ReceiveDate])
                                         FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
                                         INNER JOIN SaleAnimal ON Animal.AnimalID =SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
                                         WHERE Category = "Cat")
    ORDER BY ([SaleDate]-[ReceiveDate]) DESC;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top