2010-05-24 3 views
9

У меня есть база данных SQLite, которая содержит транзакции, каждая из которых имеет цена и transDate.Группа за месяц в SQLite

Я хочу получить сумму транзакций, сгруппированных по месяцам. Извлеченные записи должны быть как следующее:

Price month 
230  2 
500  3 
400  4 
+0

Какие столбцы таблицы? – Mark

ответ

20

это всегда хорошо, когда вы группа по МЕСЯЦА он должен проверить YEAR также

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 за год, я не указал его в своем решении. – newtover

+0

«нет такой функции: date_format» – Andomar

+0

Если вы используете андроид, вероятно, это будет полезно strftime ('% m-% Y', transDate, 'unixepoch') – dwbrito

1

Вы можете группировать на начало месяца:

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

Попробуйте следующее:

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

Используйте corresponding page в SQLite документации для будущих ссылок.

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

Работает, но потенциально суммирует значение марта 2009 года с марта 2010 года за месяц 3 – Andomar