2016-09-22 94 views
0

使用Sally的宠物商店数据库我想弄清楚花费的时间超过普通猫的猫。我想它应该开始了这样也许.....如何查找SQL数据库中物品的平均值

SELECT AVG (`SaleDate`) AS `Longer to Sale`.... 

,但我得到关于如何获得AVG时,有没有在数据库会告诉我困惑。

以下是访问的关系形式的数据库,所以每个人都可以看到

enter image description here

我认为这将是使用的唯一表是:AnimalsSaleAnimalAnimalOrderItem

但是有些帮助将是感激,也许在得到了很好的解释这

+1

样本数据和预期的结果将是有益的... – sgeddes

+0

我认为你需要使用来自AnimalOrder receivedate和saledate出售像 选择AVE(DATEDIFF( “DD”,receivedate,saledate)) – Kostya

回答

0

步骤1:什么是卖猫的平均时间?

DECLARE @avg INT; 

SELECT @avg = AVG(DATEDIFF(day, ao.ReceiveDate, s.SaleDate)) 
FROM Animal a 
    INNER JOIN SaleAnimal asale ON (a.AnimalID = asale.AnimalID) 
    INNER JOIN Sale s ON (asale.SaleID = s.SaleID) 
    INNER JOIN AnimalOrderItem aoi ON (a.AnimalID = aoi.AnimalID) 
    INNER JOIN AnimalOrder ao ON (aoi.OrderID = ao.OrderID) 
WHERE a.Breed = 'cat'; 

步骤2:多少只猫花费更长时间才能卖出?

SELECT COUNT(1) 
FROM Animal a 
    INNER JOIN SaleAnimal asale ON (a.AnimalID = asale.AnimalID) 
    INNER JOIN Sale s ON (asale.SaleID = s.SaleID) 
    INNER JOIN AnimalOrderItem aoi ON (a.AnimalID = aoi.AnimalID) 
    INNER JOIN AnimalOrder ao ON (aoi.OrderID = ao.OrderID) 
WHERE a.Breed = 'cat' 
    AND DATEDIFF(day, ao.ReceiveDate, s.SaleDate) > @avg; 
+0

对不起,“或”应该是“ao”(我在我的回答中纠正了这一点)。这是SQL语法。你可能需要调整它的访问权限,但所有的总校长应该在那里让你遵循。 – jhilden