SQLite查询GROUP BY范围

时间:2018-02-11 13:56:07

标签: sqlite group-by android-sqlite

以下是我的表格列:

Time | Close | High | Low | Open | pairVolume | Trades | Volume

我希望按时间范围拥有我的数据组。

现在棘手的部分是这个范围是自定义的(它是一个用户输入,可以很好地分组10分钟,2小时,甚至5天)

我的时间字段自纪元以来以毫秒存储。

我现在找到的解决方案,我不确定:

SELECT time + (21600000 - (time%21600000)) as gap, count(time) 
FROM price_chart 
WHERE time >= 1517418000000 and time <= 1518195600000 
GROUP BY gap
  • 21600000是6小时(毫秒)

  • 时间是自纪元以来的时间

1 个答案:

答案 0 :(得分:2)

是的,它有效。

使用下面的公式将一些数字放入excel中,它对我有用。您的间隙值将作为每个时间范围分组的顶端返回。

SELECT time + (21600000 - (time%21600000)) as gap ...

使用以下内容:

SELECT time - (time%21600000) as gap_bottom ...

会返回每个时间范围分组的底端。您可以将其添加为额外的计算列,并返回。

编辑/ PS:

您还可以在划分出纪元时间1,000毫秒并将其转换为SQLite unixepoch之后使用SQLite日期格式设置功能:

strftime('%Y-%m-%d %H:%M:%S', datetime(1517418000000 / 1000, 'unixepoch') )

... for ...

SELECT  strftime('%Y-%m-%d %H:%M:%S', datetime( (time + (21600000 - (time%21600000))) / 1000, 'unixepoch') ) as gap ...