Группировка по месяцам в SQLite

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

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

Price    month
230        2
500        3
400        4

5 ответов


это всегда хорошо, пока вы группируетесь по месяцам, он должен проверить год также

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);

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

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

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

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

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

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


в Sqlite, если вы сохраняете дату в формате unixepoch, в секундах:

select count(myDate) as totalCount, 
strftime('%Y-%m', myDate, 'unixepoch', 'localtime') as yearMonth
from myTable group by strftime('%Y-%m', myDate, 'unixepoch', 'localtime');

Если вы храните дату в формате unixepoch, в миллисекундах, разделите на 1000:

select count(myDate/1000) as totalCount, 
strftime('%Y-%m, myDate/1000, 'unixepoch', 'localtime') as yearMonth
from myTable group by strftime('%Y-%m, myDate/1000, 'unixepoch', 'localtime');