Группировка по месяцам в 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');