如何总结sqlite3中的每月总数

时间:2018-10-11 11:54:52

标签: python datetime sqlite

我这里有几行代码,能够总结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, dateamount,日期格式为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 :(得分:1)

是的,您需要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 example

(使用sqlite日期和时间功能可以理解的日期格式会获得加分;太多人使用“ MM / DD / YYYY'之类的东西)

编辑:如果您有大量数据并经常运行,则可能需要使用计算索引来加快速度:

CREATE INDEX sales_idx_monthly ON sales(strftime('%Y-%m', date));

答案 1 :(得分:0)

一个“分组依据”,而不是where部分应该起作用

GROUP BY strftime('%Y',`DATE`), strftime('%m',`DATE`)