0

好的,所以我有一个名为 log 的(SQLite)表,其中一列(时间)是 Unix 纪元时间戳(其他列与我的目的无关)。这些是带时间戳的日志条目。

我试图计算每小时记录的项目数量(所有时间——我不关心只在给定的一天或其他时间做;我试图了解整个活动的活动密度平均天数)。我已经成功地使用 query 将这些基本上分成了几个小时SELECT STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime')) FROM log;,然后它给了我一个巨大的数字 0-23 列表,我可以通过这些列表来uniq -c计算每小时的事件数。

但是(我承认,更多是出于固执而不是任何实际需要),我想在 SQL 中执行此计数步骤。我的大脑让我知道我可能必须进行某种自联接才能仅获得生成的小时数列的唯一值,但这就是它的地方 D:有什么想法吗?

4

2 回答 2

2
SELECT STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime')), 
COUNT(anotherField)
FROM log
GROUP BY STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime'));

注意:我没有使用过 SQLite。但是,它支持GROUP BY,因此,这应该工作。

于 2010-09-25T20:28:11.613 回答
1

为什么使用 COUNT(anotherField)?

采用SELECT [your expression], COUNT(*) FROM log GROUP BY [your expression]

于 2010-09-25T20:31:10.817 回答