计算 SQL 中行组的方差
Work out variance of groups of rows in SQL
我希望每月计算 table 数据的方差值,每个月包含三行数据。我正在努力想出一种没有 'looping' 的方法,据我所知,SQL.
不支持这种方法
这是我的意思的一个例子table:
+======================+=======+
| timestamp | value |
+======================+=======+
| 2020-01-04T10:58:24Z | 10 | # January (Sum of vals = 110)
+----------------------+-------+
| 2020-01-14T10:58:21Z | 68 |
+----------------------+-------+
| 2020-01-29T10:58:12Z | 32 |
+----------------------+-------+
| 2020-02-04T10:58:13Z | 19 | # February (Sum of vals = 112)
+----------------------+-------+
| 2020-02-14T10:58:19Z | 5 |
+----------------------+-------+
| 2020-02-24T10:58:11Z | 88 |
+----------------------+-------+
| 2020-03-04T10:58:11Z | 72 | # March (Sum of vals = 184)
+----------------------+-------+
| 2020-03-15T10:58:10Z | 90 |
+----------------------+-------+
| 2020-03-29T10:58:16Z | 22 |
+----------------------+-------+
| .... | .... |
+======================+=======+
我需要构建一个查询,该查询可以组合每个月每个项目的所有 3 个值,然后计算出组合值跨月的变化。希望这是有道理的?所以在这种情况下,我需要计算一月 (110)、二月 (112) 和三月 (184) 之间的差异。
有人对我如何完成此任务有任何建议吗?我正在使用 PostgreSQL,但需要一个普通的 SQL 解决方案:/
谢谢!
您是否正在寻找按月聚合然后计算差异的方法?如果是:
select variance(sum_vals)
from (select date_trunc('month', timestamp) as mon, sum(val) as sum_vals
from t
group by mon
) t;
我希望每月计算 table 数据的方差值,每个月包含三行数据。我正在努力想出一种没有 'looping' 的方法,据我所知,SQL.
不支持这种方法这是我的意思的一个例子table:
+======================+=======+
| timestamp | value |
+======================+=======+
| 2020-01-04T10:58:24Z | 10 | # January (Sum of vals = 110)
+----------------------+-------+
| 2020-01-14T10:58:21Z | 68 |
+----------------------+-------+
| 2020-01-29T10:58:12Z | 32 |
+----------------------+-------+
| 2020-02-04T10:58:13Z | 19 | # February (Sum of vals = 112)
+----------------------+-------+
| 2020-02-14T10:58:19Z | 5 |
+----------------------+-------+
| 2020-02-24T10:58:11Z | 88 |
+----------------------+-------+
| 2020-03-04T10:58:11Z | 72 | # March (Sum of vals = 184)
+----------------------+-------+
| 2020-03-15T10:58:10Z | 90 |
+----------------------+-------+
| 2020-03-29T10:58:16Z | 22 |
+----------------------+-------+
| .... | .... |
+======================+=======+
我需要构建一个查询,该查询可以组合每个月每个项目的所有 3 个值,然后计算出组合值跨月的变化。希望这是有道理的?所以在这种情况下,我需要计算一月 (110)、二月 (112) 和三月 (184) 之间的差异。
有人对我如何完成此任务有任何建议吗?我正在使用 PostgreSQL,但需要一个普通的 SQL 解决方案:/
谢谢!
您是否正在寻找按月聚合然后计算差异的方法?如果是:
select variance(sum_vals)
from (select date_trunc('month', timestamp) as mon, sum(val) as sum_vals
from t
group by mon
) t;