python sqlite3对每种类型求和

python sqlite3对每种类型求和,python,sqlite,Python,Sqlite,我有一个表(foos),它是一个Foo列表,每种Foo类型一行。第二个表(items)是一个列表,其中每一行都是Foo的类型和金额(以及其他信息)。例如,Foo3,45.2和Foo2,12.34 我想确定每种食品的总金额 这是我现有的代码,但必须有更好(更标准或更高效)的方法: 我应该如何编写代码 SELECT foo_type, SUM(amount) FROM items GROUP BY foo_type 在一个查询中提供每个foo\u类型和相应的sum。您可以从它构建一个字典,并使用它

我有一个表(foos),它是一个Foo列表,每种Foo类型一行。第二个表(items)是一个列表,其中每一行都是Foo的类型和金额(以及其他信息)。例如,Foo3,45.2和Foo2,12.34

我想确定每种食品的总金额

这是我现有的代码,但必须有更好(更标准或更高效)的方法:

我应该如何编写代码

SELECT foo_type, SUM(amount)
FROM items
GROUP BY foo_type
在一个查询中提供每个
foo\u类型
和相应的
sum
。您可以从它构建一个字典,并使用它来扩展第一个查询中的数据

或者将所有内容放在一个查询中:

cursor.execute("SELECT foo_type, SUM(amount) "
               "FROM items, foos "
               "WHERE items.foo_type = foos.type "
               "GROUP BY foo_type")
results = list(cursor)

# results is a list of tuples: [(type1, sum1), (type2, sum2), ...]
在一个查询中提供每个
foo\u类型
和相应的
sum
。您可以从它构建一个字典,并使用它来扩展第一个查询中的数据

或者将所有内容放在一个查询中:

cursor.execute("SELECT foo_type, SUM(amount) "
               "FROM items, foos "
               "WHERE items.foo_type = foos.type "
               "GROUP BY foo_type")
results = list(cursor)

# results is a list of tuples: [(type1, sum1), (type2, sum2), ...]

下面的语法突出显示告诉我您的代码有问题。我在执行行的末尾额外添加了一个“”。修正了。所以语法突出显示告诉我代码有问题。我在执行行的末尾加了一个“%”。Fixed.items和foo都使用列名“type”。当我运行第二个版本时,我在GROUPBY行上得到:sqlite3.OperationalError:不明确的列名:type。我尝试了按items.type分组,但没有效果。第一个版本完美地工作了Items和foo都使用列名“type”。当我运行第二个版本时,我在GROUPBY行上得到:sqlite3.OperationalError:不明确的列名:type。我尝试了按items.type分组,但没有效果。第一个版本运行良好