2012-03-21 38 views
0

我正在努力改進我的程序中的例程,我計算同一日期的發生次數。 因此,也許一個例子:理貨發生或子查詢混亂

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

直到現在我用如下語句:

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

現在我基本上要產生落在同一日期的條目的直方圖

2012-03-21 20 
2012-03-20 13 
2012-03-19 50 

依此類推。然而,我沒有看到一個簡單的方法來做到這一點,所以我想我會做一個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中的計數問題。

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 2012-03-21 13:22:42