微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算 SQL 中行组的差异

如何解决计算 SQL 中行组的差异

我希望为数据表计算出每月的方差值,每个月包含三行要考虑在内。我正在努力想出一种没有“循环”的方法,据我所知,sql 不支持这种方法

这是我的意思的示例表:

+======================+=======+
| 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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。