我是MySQL的新手,我正在尝试编写一个查询来确定列的平均值以及每个值与该列的差异。 例如:
Expected Output:
Price Average Difference
2 4 -2
7 4 3
3 4 -1
这是我希望的结果,但我无法正确理解语法 这是我的代码:
SELECT Price, AVG(Price) AS Average,
(AVG(Price) - Price) AS Difference
FROM Item_Price
GROUP BY Price;
我的结果是:
Price Average Difference
2 2 0
7 7 0
3 3 0
有什么建议吗? (这是我正在使用的表格)
Table: Item_Price
PriceID Price Item
1 2 Ball
2 7 Socks
3 3 Book
答案 0 :(得分:1)
一种方法是使用内联视图获取平均值,然后将内联视图查询(一行)的结果连接到表中的每一行。
举个例子:
SELECT t.Price
, s.Average
, t.Price - s.Average AS Difference
FROM ( SELECT AVG(r.Price) AS Average
FROM Item_Price r
) s
CROSS
JOIN Item_Price t
这不是唯一的方法;还有其他查询表单将返回相同的结果。
答案 1 :(得分:0)
select price, average, (average - price) as difference
from item_price, (select AVG(Price) AS Average from item_price);