题
我要进行查询,列出了高于平均水平的猫长卖猫? 我有五个表:
动物,售,AnimalOrderItem,AnimalOrder,和SaleAnimal
动物表:AnimalID,名称,类别 (猫,狗,鱼)
SaleAnimal表:SaleID,AnimalID, SalePrice
销售表:SaleID,日期,雇员, 客户id
AnimalOrderItem表:订单, AnimalID,成本
AnimalOrder:订单,订购日期, ReceivingDate, 供应商ID,ShippingCost,雇员
有是其他表我不认为他们对查询的效果。
我觉得以下...进行查询,以计算日为所有前卖:
[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