Sqlite 统计发生的事件或子查询混乱
我正在努力改进我的程序中的一个例行程序,即计算同一日期发生的次数。 举个例子:Sqlite 统计发生的事件或子查询混乱,sqlite,select,Sqlite,Select,我正在努力改进我的程序中的一个例行程序,即计算同一日期发生的次数。 举个例子: Time Other_stuff Entry 1332334357 ..... 1332334367 ..... 1332334386 ..... 到目前为止,我一直在使用这样一种说法: SELECT date(time, 'unixepoch') FROM reviewHistory WHERE lastInterval <= 21 AND nextInter
Time Other_stuff Entry
1332334357 .....
1332334367 .....
1332334386 .....
到目前为止,我一直在使用这样一种说法:
SELECT date(time, 'unixepoch') FROM reviewHistory
WHERE lastInterval <= 21 AND nextInterval > 21
等等。然而,我看不到一个简单的方法来实现这一点,所以我想我只需要选择一个DISTINCT并存储这些值,然后用条件查询每个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')
哦,太美了。这正是我所希望的谢谢你。我想我在阅读时误解了COUNT*的用法。
SELECT date(time, 'unixepoch'), COUNT(*)
FROM reviewHistory
WHERE lastInterval <= 21 AND nextInterval > 21
GROUP BY date(time, 'unixepoch')