0

さて、log という (SQLite) テーブルがあり、1 つの列 (時間) は Unix エポック タイムスタンプです (他の列は私の目的には関係ありません)。これらは、タイムスタンプ付きのログ エントリです。

1 時間あたりにログに記録されたアイテムの数を取得しようとしています (常時 -- 特定の日だけに記録することは気にしません。平均日)。query を使用して、基本的にこれらを時間単位でビニングすることに成功しました。これにより、1 時間あたりのイベント数を取得するために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 に答える