SQL, объединяющий GROUP BY и SUM - PullRequest
       9

SQL, объединяющий GROUP BY и SUM

5 голосов
/ 28 октября 2009

Мне нужна помощь с SQL. У меня таблица sqlite вот так;

CREATE TABLE mytable (datetime DATE, type TEXT, amount REAL)

Мне нужен запрос, который суммирует сумму для каждого типа И год-месяц (как вы можете видеть, год также извлекается, поскольку данные могут охватывать несколько лет). Я подошел к чему-то наполовину, но немного разболтался о SQL.

sqlite> SELECT strftime('%Y',datetime) AS year, strftime('%m',datetime) AS month, type, amount FROM mytable ;

2009|06|Type1|-1000.0
2009|06|Type1|-100.0
2009|06|Type2|-100.0
2009|07|Type1|-214.91
2009|07|Type2|-485.0

Я попробовал несколько комбинаций SUM и GROUP BY в моем запросе выше, но ни одна из них не делает то, что я хочу. То, что я хочу, является результатом чего-то вроде:

2009|06|Type1|-1100.0
2009|06|Type2|-100.0
2009|07|Type1|-214.91
2009|07|Type2|-485.0

Да, тип должен быть внешним ключом, я упростила вещи, чтобы было проще задать вопрос:)

1 Ответ

16 голосов
/ 28 октября 2009
SELECT strftime('%Y',datetime) AS year, 
       strftime('%m',datetime) AS month, 
       type, 
       Sum(amount) As Amount 
FROM mytable 
Group By 1, 2, 3

Примечание

Некоторые БД не поддерживают группирование по индексу, поэтому вам придется это сделать.

SELECT strftime('%Y',datetime) AS year, 
       strftime('%m',datetime) AS month, 
       type, 
       Sum(amount) As Amount 
FROM mytable 
Group By strftime('%Y',datetime), 
       strftime('%m',datetime), 
       type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...