2010-05-24 88 views
9

Tengo una base de datos SQLite que contiene transacciones, cada una de ellas tiene un precio de y transDate.Grupo por mes en SQLite

Deseo recuperar la suma de las transacciones agrupadas por mes. Los registros recuperados deben ser como la siguiente:

Price month 
230  2 
500  3 
400  4 
+0

¿Cuáles son las columnas de la tabla? – Mark

Respuesta

20

siempre es bueno, mientras que el grupo por mes debe comprobar también AÑO

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

para SQLite

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

+1 para la parte del año, no lo especifiqué en mi solución. – newtover

+0

"no such function: date_format" – Andomar

+0

Si está usando Android probablemente sea útil strftime ('% m-% Y', transDate, 'unixepoch') – dwbrito

1

puede agrupar en el inicio del mes:

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

Pruebe lo siguiente:

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

Uso del corresponding page en la documentación de SQLite para futuras referencias.

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

Funciona, pero puede sumar el valor de marzo de 2009 con marzo de 2010 para el mes 3 – Andomar