SQL查询以获取给定列的每个可能值的项数

时间:2010-09-25 20:20:40

标签: sql sqlite count group-by strftime

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

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

然而(我承认,更多的是出于顽固而不是任何实际需要),我想在SQL中执行这个计数步骤。我的大脑让我知道我不得不做一些自我加入才能获得生成小时列的唯一值,但这就是它的结果D:任何想法?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

为什么要使用COUNT(anotherField)?

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