Группировать по месяцам в SQLite - PullRequest
10 голосов
/ 24 мая 2010

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

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

Price    month
230        2
500        3
400        4

Ответы [ 6 ]

23 голосов
/ 24 мая 2010

всегда хорошо, когда вы группируете по МЕСЯЦЮ, также следует проверить ГОД

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

FOR SQLITE

select SUM(transaction) as Price, 
       strftime("%m-%Y", transDate) as 'month-year' 
       from transaction group by strftime("%m-%Y", transDate);
2 голосов
/ 24 мая 2010
SELECT
    SUM(Price) as Price, strftime('%m', myDateCol) as Month
FROM
    myTable
GROUP BY
    strftime('%m', myDateCol)
1 голос
/ 24 мая 2010

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

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

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

1 голос
/ 24 мая 2010

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

select  date(DateColumn, 'start of month')
,       sum(TransactionValueColumn)
from    YourTable
group by 
        date(DateColumn, 'start of month')
0 голосов
/ 09 апреля 2019

Это еще одна форма:

SELECT SUM(price) AS price,
STRFTIME('%Y-%m-01', created_at) as created_at
FROM records
GROUP BY STRFTIME('%Y-%m-01', created_at);
0 голосов
/ 27 апреля 2018

В 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...