我有一张类似的表:
| id(INTEGER) | id2(INTEGER) | time(DATETIME) | value(REAL) |
|-------------|--------------|----------------------|-------------|
| 1 | 2000 | 2004-01-01 00:00:00 | 1000 |
我用visual basic查询。现在我想总结2004年到2010年之间的所有条目,结果如下:
2004 11,000
2005 35,000
2006 46,000
如果我在视觉基础上这样做,很少有循环实现,但不幸的是,这不是很有效。
是否可以创建一个查询,该查询产生两年之间的结果。或两个月(一年内),按月,日(一个月),小时(一天内),分钟(一小时内)分组?
编辑: 查询年份间隔:
SELECT STRFTIME('%Y', time) AS year, SUM(value) AS cumsum FROM mytable WHERE year >= STRFTIME('%Y','2005-01-01 00:00:00') AND year <= STRFTIME('%Y','2010-01-01 00:00:00') GROUP BY STRFTIME('%Y', mytable.time) ORDER BY year;
现在需要几个月,几天和几个小时的想法。
答案 0 :(得分:2)
这是一个聚合查询,但您需要从日期中提取年份:
select strftime('%Y', time) as yr, sum(value)
from table
group by strftime('%Y', time)
order by yr;
答案 1 :(得分:1)
嗨下面是sql和sqlite的代码。我们可以按时间分组,而不是再次使用strftime函数。
<强> SQLITE: 强> 选择strftime(&#39;%Y&#39;, 时间)作为年份,总和(价值)值 来自参加小组的时间
<强> SQL: 强> 选择EXTRACT(YEAR FROM time)作为年份,sum(value)值 来自时间的分组