从SQLite中的所有行中减去平均值

时间:2019-04-18 19:16:21

标签: sqlite average aggregate-functions

我有一列带有多个值X的列,但是我想计算每个值与平均值之间的差,即X-AVG(X)。

我尝试过:

    SELECT hours-AVG(hours) FROM users

但是,它仅返回一个值,即第一个值减去平均值。

如何获得一个列,其中每个值与这些值的平均值之间存在差异?

2 个答案:

答案 0 :(得分:1)

您必须从每一列中减去(SELECT AVG(hours) FROM users)

SELECT hours - (SELECT AVG(hours) FROM users) FROM users

答案 1 :(得分:1)

如果您使用的是Sqlite 3.25或更高版本,另一种方法是使用window function

SELECT hours - avg(hours) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM users