在SQL

时间:2015-06-10 09:02:56

标签: sql postgresql

我目前有一台工业气体发生器,它被数据记录到Postgres服务器上。发电机中的一个容器额定压力循环达10,000次。

是否有一个SQL示例或方法来显示容器的压力(每秒数据记录)在10 bar和100 bar之间循环的次数?

根据以下评论编辑:

表格结构:

CREATE TABLE log_934 (datetime timestamp primary key, pt001 real, pt002 real ...);

每秒“pt”值为压力时,数据通过外部程序插入表中。等效的INSERT命令是:

INSERT INTO log_934 (datetime, pt001, pt002 ... ) VALUES ('2015-05-10 10:00:00', 50.65, 75.54 ...);
INSERT INTO log_934 (datetime, pt001, pt002 ...) VALUES ('2015-05-10 10:00:01, 50.69, 75.49 ...);
...

预期结果将是:

|pt001 cycled between 10 and 100|
---------------------------------
|50                             |

1 个答案:

答案 0 :(得分:1)

我的第一个方法:

select count(*) from (
    select distinct max(lmin.datetime) as inflexion
    from log_934 lmax
    inner join log_934 lmin on lmax.datetime > lmin.datetim and 
                               lmin.pt001 <= 10
    where lmax.pt001 >= 100
    group by lmax.datetime

    union all

    select distinct max(lmax.datetime) as inflexion
    from log_934 lmin
    inner join log_934 lmax on lmin.datetime > lmax.datetim and 
                               lmax.pt001 >= 100
    where lmin.pt001 <= 10
    group by lmin.datetime
) T

第一个子查询得到每个&gt; 100个日期时间读取的de&lt; 10日期时间。第二个做反过来。然后计算找到的日期时间。在这个漂亮的d3js即:

中看到它

enter image description here