2012-03-21 2 views
0

私は同じ日付の出現回数を数えている私のプログラムでルーチンを改善しようとしています。 そのため、おそらく例:今、私は基本的に同じ日に出現またはサブクエリの混乱を集計する

2012-03-21 20 
2012-03-20 13 
2012-03-19 50 
を落下エントリのヒストグラムを生成したい

SELECT date(time, 'unixepoch') FROM reviewHistory 
     WHERE lastInterval <= 21 AND nextInterval > 21 

Time   Other_stuff Entry 
1332334357 ..... 
1332334367 ..... 
1332334386 ..... 

今まで私のようなステートメントを使用しました

など。しかし、私はこれを行う簡単な方法は見当たらないので、SELECT DISTINCTを実行してこれらの値を保存し、条件付きの各エントリごとにクエリを実行し、行数を確認すると考えました。処理時間とI/Oアクセス時間は節約できましたが、これを実現するステートメントを見つけることができませんでした。私はこれがうまくいくと思ったが、そうではない。例:

SELECT time FROM reviewHistory WHERE 
(SELECT date(time, 'unixepoch') FROM reviewHistory 
     WHERE lastInterval <= 21 AND nextInterval > 21) = "2012-03-21" 

は、エラーはありませんが、それはまた、何も返さないと、私はこれは私がいくつかのSQLiteの文で達成することができ、アプリケーション側を管理する必要はありません何かであることをかなり確信して感じます。

更新:私がそれを投稿した後、ちょうど私に来た。私はまだSQLの集計問題を達成するためのより優雅な方法があると信じたいと思っています。

私はあなたの質問を理解しますが、すべての日付とカウントを取得する場合は、1つのクエリが十分なものでなければならないか分からない
SELECT time FROM 
     (SELECT date(time, 'unixepoch') AS time 
     FROM reviewHistory WHERE lastInterval <= 21 AND nextInterval > 21) 
    WHERE time = "2012-03-21" 

答えて

1

SELECT date(time, 'unixepoch'), COUNT(*) 
FROM reviewHistory 
WHERE lastInterval <= 21 AND nextInterval > 21 
GROUP BY date(time, 'unixepoch') 
+0

ああ美しいです。それはまさに私があなたに感謝したいと思っていたものです。私はそれを読んでいたときにCOUNT(*)がどのように使われたのか誤解していたと思います。 – Jeremy

関連する問題