SQL查询,以获取给定列中每个可能值包含多少项的计数

SQL查询,以获取给定列中每个可能值包含多少项的计数,sql,sqlite,count,group-by,strftime,Sql,Sqlite,Count,Group By,Strftime,好的,我有一个名为log的SQLite表,其中一列时间是Unix历元时间戳,其他列与我的目的无关。这些是带时间戳的日志条目 我试图计算出每小时有多少个项目被记录下来——我不想只在给定的一天或任何时候做这件事;我试图了解平均每天的活动密度。通过查询SELECT STRFTIME'%H',DATETIMEtime',unixepoch',localtime'FROM log;,我基本上已经成功地将这些时间分为小时;,这就给了我一个巨大的数字列表0-23,我可以通过uniq-c计算每小时的事件数 然而

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

我试图计算出每小时有多少个项目被记录下来——我不想只在给定的一天或任何时候做这件事;我试图了解平均每天的活动密度。通过查询SELECT STRFTIME'%H',DATETIMEtime',unixepoch',localtime'FROM log;,我基本上已经成功地将这些时间分为小时;,这就给了我一个巨大的数字列表0-23,我可以通过uniq-c计算每小时的事件数

然而,我承认,我想在SQL中完成这个计数步骤,这更多是出于固执,而非任何实际需要。我的大脑让我知道,我可能需要做一些自我连接,才能得到生成的小时数列的唯一值,但这就是它抛出d的地方:有什么想法吗

SELECT STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime')), 
COUNT(anotherField)
FROM log
GROUP BY STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime'));
注意:我没有使用SQLite。但是,它支持GROUPBY,因此,这应该是可行的


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

为什么要使用COUNTanotherField


使用[your expression]从日志组中选择[your expression],COUNT*。

为什么使用COUNTanotherField


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

+1:GROUP BY在标准SQL中是必需的,但是天哪,我完全忘记了GROUP BY,这说明我有多生疏了。这个查询可能有点慢,但对于我正在处理的问题来说,它真的很好。顺便说一下,最好选择STRFTIME。。。“按小时[…]分组”。@tgies:我不知道SQLite是否支持按小时分组的语法,因为我没有使用过它。其他数据库(如SQL Server)不支持group by中的列别名,IIRC.SQLite支持按别名分组。这是避免发生重大事故的最好方法。想想看,Oracle和MySQL也是如此,所以可能是SQL Server因为不支持它而脱颖而出?+1:GROUP by在标准SQL中是必需的,但是天哪,我完全忘记了GROUP by,这说明我是多么的生疏。这个查询可能有点慢,但对于我正在处理的问题来说,它真的很好。顺便说一下,最好选择STRFTIME。。。“按小时[…]分组”。@tgies:我不知道SQLite是否支持按小时分组的语法,因为我没有使用过它。其他数据库(如SQL Server)不支持group by中的列别名,IIRC.SQLite支持按别名分组。这是避免发生重大事故的最好方法。想想看,Oracle和MySQL也是如此,所以可能是SQL Server因为不支持它而脱颖而出?