2010-05-24 5 views
9

J'ai une base de données SQLite qui contient des transactions, chacune d'elles ayant un prix et une transDate.Grouper par mois dans SQLite

Je souhaite récupérer la somme des transactions regroupées par mois. Les enregistrements récupérés doivent être comme les suivantes:

Price month 
230  2 
500  3 
400  4 
+0

Quelles sont les colonnes du tableau? – Mark

Répondre

20

il est toujours bon pendant que vous le groupe par mois, il faut vérifier aussi AN

select SUM(transaction) as Price, 
     DATE_FORMAT(transDate, "%m-%Y") as 'month-year' 
     from transaction group by DATE_FORMAT(transDate, "%m-%Y"); 

SQLite

select SUM(transaction) as Price, 
     strftime("%m-%Y", transDate) as 'month-year' 
     from transaction group by strftime("%m-%Y", transDate); 
+0

+1 pour la partie année, je ne l'ai pas spécifié dans ma solution. – newtover

+0

"pas une telle fonction: date_format" – Andomar

+0

Si vous utilisez Android probablement ce sera utile strftime ('% m-% Y', transDate, 'unixepoch') – dwbrito

1

Vous pouvez regrouper sur le début du mois:

select date(DateColumn, 'start of month') 
,  sum(TransactionValueColumn) 
from YourTable 
group by 
     date(DateColumn, 'start of month') 
1

Effectuez les opérations suivantes:

SELECT SUM(price), strftime('%m', transDate) as month 
FROM your_table 
GROUP BY strftime('%m', transDate); 

Utilisez le corresponding page dans la documentation SQLite pour de futures références.

2
SELECT 
    SUM(Price) as Price, strftime('%m', myDateCol) as Month 
FROM 
    myTable 
GROUP BY 
    strftime('%m', myDateCol) 
+0

Fonctionne, mais peut être la valeur de Mars 2009 avec Mars 2010 pour le mois 3 – Andomar