MySQL计算每个值的平均值和差值?

时间:2014-10-14 04:30:54

标签: mysql sql syntax average mean

我是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

2 个答案:

答案 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);