2015-04-08 2 views
0

J'ai une table semblable à ceci:entrées d'une requête SQLite

| id(INTEGER) | id2(INTEGER) | time(DATETIME) | value(REAL) | 
|-------------|--------------|----------------------|-------------| 
|  1  |  2000 | 2004-01-01 00:00:00 | 1000  | 

que je requête avec Visual Basic. Maintenant, je veux résumer toutes les entrées entre l'année 2004 et 2010 de sorte que le résultat ressemble à ceci:

2004 11,000 
2005 35,000 
2006 46,000 

je le fais cSi à l'intérieur base visuelle, il est réalisé avec quelques boucles, mais malheureusement, ce n'est pas très performant.

Est-il possible de créer une requête qui donne le résultat dit entre deux années regroupées par années. Ou entre deux mois (dans un délai d'un an), regroupés par mois, jours (dans un mois), heures (dans un délai d'une journée), minutes (dans un délai d'une heure)?

EDIT: requête pour l'intervalle de l'année:

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; 

maintenant besoin d'une idée pendant des mois, des jours et des heures.

Répondre

2

Ceci est une requête d'agrégation, mais vous devez extraire l'année de la date:

select strftime('%Y', time) as yr, sum(value) 
from table 
group by strftime('%Y', time) 
order by yr; 
1

Salut Voici le code pour SQL et sqlite.we peut faire groupe par le temps au lieu d'utiliser la strftime fonctionner à nouveau.

SQLITE: select strftime ('% Y', le temps ) que l'année, la somme (valeur) valeur du groupe attendence par temps

SQL: sélectionnez EXTRAIT (ANNÉE À PARTIR du temps) comme année, somme (valeur) valeur de l'assentiment Grouper par heure