首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python + SQL (子字符串+ SUM)

Python + SQL (子字符串+ SUM)
EN

Stack Overflow用户
提问于 2021-06-28 05:40:29
回答 3查看 35关注 0票数 1

我有一个表,看起来像这样:

代码语言:javascript
复制
[Things]
id             date             number          name
------------------------------------------------------------
1              2000-11-20       11              Joe
2              1999-10-13       12              Lis
3              1999-11-11       13              Jhonson
------------------------------------------------------------

我需要编写这个程序,在这个程序中,我使用Python和SQL来计算该列表中每个数字的总和,同时只使用年份作为过滤器。问题是我从来没有做过python,而且在没有任何指导的情况下我很难在java中实现SQL,所以我只是开始学习python的基础知识。(这是我正在学习的初学者SQL课程,所以重点不是学习python,而是其他任何东西)我想出了这个:

代码语言:javascript
复制
year = input("Give the year: ")
        arvo = db.execute("SELECT number,SUBSTRING (date, 1, 4) FROM Things").fetchall()        

所以现在我有了数字和年份的列表,所以我现在可以很容易地计算总和,但我不太确定你是如何在Python中做到的。如果有人知道在SQL中进一步过滤它的方法,那就更好了!提前感谢!我知道我可以使用"if year in arvo“来检查是否有正确的年份,但由于某些原因,我对每一行都很纠结(对于x)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-28 05:52:51

您必须筛选作为输入获得的年份的表,并使用SUM()聚合函数来获得结果:

代码语言:javascript
复制
vuosi= input("Give the year: ")
sql = """
SELECT SUM(number) AS total 
FROM Things
WHERE SUBSTR(date, 1, 4) = ? 
"""
arvo = db.execute(sql, (vuosi,)).fetchone()
total_sum = arvo[0]
票数 1
EN

Stack Overflow用户

发布于 2021-06-28 05:49:01

我假设您使用的是sqlite。尝试使用此SQL查询:

代码语言:javascript
复制
SELECT SUM(number) FROM Things
WHERE strftime('%Y', date) = year

python代码应该是:

代码语言:javascript
复制
arvo = db.execute("SELECT SUM(number) FROM Things WHERE YEAR(date) = ?", (int(vuosi),)).fetchone()[0]
票数 1
EN

Stack Overflow用户

发布于 2021-06-28 05:55:10

代码语言:javascript
复制
vuosi= input("Give the year: ")
sql = f"""
SELECT SUM(number) AS sum
FROM Things
WHERE SUBSTRING(date, 1, 4) = {vuosi} 
"""

从这里开始执行。年份输入被填充到SQL查询中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68155501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档