如何在sqlite3中一次查询多个子间隔的最小值/最大值?

时间:2018-06-25 22:52:05

标签: sqlite

我有一个带时间戳列的sqlite3表和另一个具有特定值的列。 要获取值的总体最小值/最大值,我可以查询:

SELECT timestamp, max(value), min(value) from myTable;

结果是一行。

但是有没有办法查询大小相等的子间隔的各个最小值/最大值? 例如,我要考虑大小为10的间隔(包括左边界,但不包括右边界): [0,10),[10,20),[20,30),... 所需的结果将是几行,如下所示:

timestamp max(value) min(value)
    0          3         1
   10          5         2
   20         13         0
   30         42        24

当然,很容易将整个查询分为几个查询以逐行获得此结果,但是有没有办法通过单个查询来全部获取呢? / p>

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案: 为了获得所有随后的10s间隔的最小值/最大值,以下查询似乎可以解决问题:

SELECT (timestamp / 10) * 10 as intervalStartTime, min(value), max(value) FROM Test GROUP BY intervalStartTime;

这是假设时间戳为整数类型,因此(timestamp / 10)在再次相乘之前会被截断。