正在统计发生的事件或子查询混乱



我正在努力改进程序中的一个例程,在该例程中,我计算同一日期的出现次数。举个例子:

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"

我不确定我是否理解你的问题,但要获得所有日期和计数,一个查询就足够了:

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

最新更新