문제
판매하는 데 평균 고양이보다 오래 걸린 고양이를 나열하기 위해 쿼리를 만들고 싶습니까? 나는 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;
제휴하지 않습니다 StackOverflow