2017-07-30 85 views
0

我在使用此SQL選擇查詢時遇到了很多麻煩。我開始相信我需要製作某種臨時桌,但我可能是錯的。MySQL從另一列中選擇具有不同值的查詢:SUM()行

我需要顯示由P_CODE標識的產品銷售量超過此表上的平均產品。我面臨的問題是有多個條目具有相同的P_CODE。

SELECT LINE.P_CODE FROM LINE 
WHERE LINE.LINE_UNITS > (SELECT SUM(LINE.LINE_UNITS) FROM LINE)/(SELECT COUNT(DISTINCT LINE.P_CODE) FROM LINE); 

此選擇查詢需要我接近期望的結果,但其實我是想運行以下命令:

SELECT LINE.P_CODE FROM LINE 
WHERE (SELECT SUM(LINE.LINE_UNITS) FROM LINE GROUP BY LINE.P_CODE) > (SELECT SUM(LINE.LINE_UNITS) FROM LINE)/(SELECT COUNT(DISTINCT LINE.P_CODE) FROM LINE); 

但我收到此錯誤

錯誤代碼:1242。子查詢返回多於一行

如果我的演示文稿很抱歉桌子很差,我也拿了一個screenshot。但是我將它包含在內以幫助解釋爲什麼我無法使用AVG()函數。


LINE_UNITS | P_CODE 1 | 13-Q2/P2 5 | 13-Q2/P2 2 | 13-Q2/P2 1 | 1546-QQ2 1 | 2232/QTY 1 | 2238/QPD 1 | 23109-HB 2 | 23109-HB 1 | 23109-HB 1 | 23109-HB 2 | 54778-2T 3 | 54778-2T 1 | 54778-2T 1 | 89-WRE-Q 12 | PVC23DRT 5 | PVC23DRT 3 | SM-18277 3 | WR3/TT3

+0

'Mysql' <>'的Sql Server'選擇您所使用的一個! –

+0

你正在使用哪個數據庫。請正確使用標籤@Pivot –

+0

對不起,我正在使用mysql,我剛纔修復了標籤 – Pivot

回答

2

如果我沒看錯你正在尋找這樣的事情

SELECT l.P_CODE 
FROM LINE l 
GROUP BY l.P_CODE 
HAVING Sum(l.LINE_UNITS) > (SELECT Sum(LINE_UNITS)/Count(DISTINCT P_CODE) 
          FROM LINE) 
+0

這正是我所需要的!非常感謝,我還不熟悉HAVING條款。 – Pivot

相關問題