我正在努力改进程序中的一个例程,在该例程中,我计算同一日期的出现次数。举个例子:
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')