2012-02-22 58 views
3

我需要一些幫助,從我的家庭作業中的一個問題,我一直在嘗試大約一個小時,現在不能讓它運行。mySQL查詢問題 - 作業

列表比平均每客戶的項目買更多的項目客戶

的表如下所示:

Customer(Cnum, CustomerName, Address) 
Item(Inum, ItemName, Manufacturer, Year) 
Bought(Cnum, Inum, Date, Quantity) 
Prefer(Inum, Cnum) 

我能想出的最好的是,它需要的總每個客戶的數量與數量的總體平均數相比較。我已經試過各種形式此查詢:

SELECT Cnum 
FROM Bought 
WHERE 
(
    SELECT Cnum, SUM(Quantity) 
    FROM Bought 
    GROUP BY Cnum; 
) > 
(
    SELECT AVG(Quantity) 
    FROM Bought 
); 

但它返回一個錯誤 - (phpMyAdmin的心不是告訴我是什麼問題,只是沒有執行,並要無連接頁面,這意味着錯誤在我的查詢)

我也試圖與回報更高SUM:

SELECT SUM(Quantity) 
FROM Bought 
WHERE SUM(Quantity) > AVG(Quantity); 

而且同樣的問題。

任何幫助將不勝感激,甚至解釋爲什麼第二個失敗。

+0

有2個總和:4和2 ,平均爲1.25 所以我知道哪個值應該顯示 – NaGeLxZ 2012-02-22 04:59:58

+0

只是一個有用的提示:使用MySQL Workbench。它是免費的,更好的在報告錯誤 – xbonez 2012-02-22 05:02:54

+1

可以共享一些數據行? – 2012-02-22 05:04:42

回答

4

你可能想看看SQL的HAVING條款。

注:我故意不給你完整的答案,因爲這是作業。

+0

+1不只是寫爲他:)從我 – OpenSorceress 2012-02-22 05:25:33

+0

很好,但我無法阻止自己給的答案,因爲他們試圖小時左右。 – 2012-02-22 05:31:43

+0

@JohnFx謝謝。雖然我可以輕鬆地選擇複製較低的答案帖子,但您的答案已被接受,因爲它向我展示瞭如何解決問題,而不是解決方案本身。 – NaGeLxZ 2012-02-22 15:32:43

1

試試這個,也許它可以幫助

SELECT Cnum, SUM(Quantity) 
FROM Bought 
GROUP BY Cnum 
HAVING SUM(OrderQuantity) > avg(Quantity) 
+0

錯誤1111 - 無效的使用組功能。您不能在WHERE子句中使用聚合。改變在哪裏HAVING。 – 2012-02-22 05:16:19

+0

哦~~你也許是對我沒有測試過這 – 2012-02-22 05:17:39

3

爲什麼你不試試這個。

SELECT `Cnum` , Sum(Quantity) 
FROM `bought` 
GROUP BY `Cnum` 
HAVING Sum(Quantity) > (SELECT AVG(Quantity) FROM Bought) 
1

嘗試以下:

SELECT Cnum 
FROM Bought 
having SUM(Quantity) > (SELECT avg(Quantity) FROM Bought) 
order by SUM(Quantity) desc 
1

嘗試此

SELECT Cnum, Inum, SUM(Quantity) sum, AVG(QUANTITY) average 
from bought group by cnum,inum having sum > average