sql - 获取行值之间差异的平均值和标准差

标签 sql postgresql

给出下表:

CREATE TABLE datapoints
(
  id serial NOT NULL,
  datasource text,
  "timestamp" integer,
  value text,
  CONSTRAINT datapoints_pkey PRIMARY KEY (id)
)

如何计算 timestamp1 中一行到下一行的差异的平均值和标准偏差?

我的意思是,如果数据是这样的:

timestamp
---------
1385565639
1385565641
1385565643

我想计算以下数据的平均值和标准差:

timestamp difference
--------------------
0
2
2

这甚至可以在单个查询中实现吗?

最佳答案

第一个返回差值,第二个返回标准偏差和平均值:

--difference
WITH rn as(
    SELECT timestamp , row_number()over() rown
    FROM datapoints order by timestamp
)
SELECT  ta.rown, tb.rown,tb.timestamp - ta.timestamp 
FROM rn as ta,rn as tb
WHERE ta.rown=tb.rown+1 ;

--avg, stddev
WITH rn as(
    SELECT timestamp , row_number()over() rown
    FROM datapoints 
    ORDER BY timestamp
)
SELECT  stddev(tb.timestamp - ta.timestamp), avg(tb.timestamp - ta.timestamp) 
FROM rn as ta,rn as tb
WHERE ta.rown=tb.rown+1 ; 

关于sql - 获取行值之间差异的平均值和标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294126/

相关文章:

MYSQL Group by 和 Group Concat 问题

c++ - 用于 64 位处理器的 libodbc makefile

sqlite并发问题

postgresql - 如何在 Postgres 的 uuid 列中插入值?

node.js - 无法使用 Node.js 在 heroku 上创建 postgresql 表

postgresql - 如何使用 debezium 从 Postgres 流式传输更改

ruby-on-rails - 如何在 Rails 中使用 postgresql 函数

java - postgresql(set role user)命令在SSM项目中如何使用?

c# - Progress-ODBC-TSQL动态列CASE语句截断数据

mysql - 从具有条件的映射表中选择不同的记录