Как подвести итоги за месяц в sqlite3 - PullRequest
0 голосов
/ 11 октября 2018

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

example:
january =  200
february = 240
march    = 310
....
december = 8764

с учетом условия года.

CODE

import sqlite3


conn = sqlite3.connect("test.db")
cur = conn.cursor()
cur.execute("SELECT SUM(AMOUNT) FROM `cash` WHERE strftime('%m', `DATE`) = '10'")
rows = cur.fetchall()
for row in rows:
    print(row)

В таблице есть столбцы name, date и amount, а дата в этом формате 2019-05-23, 2016-05-30

NAME          DATE         AMOUNT

JOE        2018-01-23       50.00
BEN        2018-01-21       61.00

FRED       2018-02-23       31.00
FRED       2018-02-03       432.00


DAN        2018-03-23       69.00
FRED       2018-03-23       61.00

BRYAN       2018-04-21       432.00
FELIX       2018-04-25       907.00

.......................
......................

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Да, тебе нужно GROUP BY.Примерно так:

SELECT strftime('%Y-%m', date) AS sales_month
     , sum(amount) AS total_sales
FROM sales
GROUP BY sales_month
ORDER BY sales_month;

Пример SQLFiddle

(Вы получаете бонусные баллы за использование формата даты, который понятны функциям даты и времени sqlite; слишком много людей используют "ММ"/ DD / YYYY 'или т. П.)

Редактировать: Если у вас много данных и вы часто их запускаете, вы можете использовать вычисляемый индекс, чтобы ускорить его:

CREATE INDEX sales_idx_monthly ON sales(strftime('%Y-%m', date));
0 голосов
/ 11 октября 2018

«группа по» вместо части, где должна работать

GROUP BY strftime('%Y',`DATE`), strftime('%m',`DATE`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...