如何在sqlite3中总结每月总数

问题描述 投票:0回答:2

我在这里有几行代码可以总结一个month的总值,但我想要做的是总结每个month并打印它们。当我改变月份值它工作正常但我想总结每个月的总价值

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

考虑到年份条件。

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

.......................
......................
python datetime sqlite
2个回答
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));

0
投票

一个“group by”而不是where部分应该工作

GROUP BY strftime('%Y',`DATE`), strftime('%m',`DATE`)
© www.soinside.com 2019 - 2024. All rights reserved.