2014-04-16 60 views
2

在執行之前,我總是測試我的查詢。所以我創建了this fiddle以成本減去所有項目減去平均值只返回一行

我基本上有IDS和成本表,我想找到的實際成本和平均的區別:

CREATE TABLE Items (itemId VARCHAR(10), cost INT); 
INSERT INTO Items VALUES (1,1); 
INSERT INTO Items VALUES (2,2); 
INSERT INTO Items VALUES (3,3); 
INSERT INTO Items VALUES (4,4); 
INSERT INTO Items VALUES (5,5); 
INSERT INTO Items VALUES (6,6); 

這是我的查詢:但是

SELECT itemID, cost-AVG(cost) FROM Items 

返回僅第一行。提示?

+0

它返回兩列給我。 –

+0

@ roryap,我認爲他的意思是'第一行',而不是列 –

回答

2

我的第一個建議是存儲在一個變量的平均值,然後執行查詢

SELECT @avg := AVG(cost) FROM Items; 

SELECT itemID, [email protected] FROM Items; 

http://sqlfiddle.com/#!2/97a33/20

+0

但爲什麼它只返回一行? –

+0

我真的不確定。也許這是一個與MySQL的錯誤,我期望它顯示所有的結果,或失敗。從現在開始,這是完全意想不到的行爲。 –

1
SELECT itemID, cost-(SELECT AVG (cost) FROM Items) FROM Items 

,除非你想的平均存儲在一個變量