2016-09-22 92 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