[英]Python Sqlite3 advanced grouping
我希望以前没有问过这个问题。 我有一个包含以下列和信息的csv文件,可以将其上载到具有相同列名的sqlite3数据库中
Company Type Qty Price
ABC r 5 $$$
ABC h 9 $$$
ABC s 10 $$$
DER a 3 $$$
DER z 6 $$$
GGG q 12 $$$
GGG w 20 $$$
但是,如何在csv文件上获得以下结果? 基本上,按公司名称分组并仍显示类型,数量和价格,并在行尾显示每个公司的总数量。
Company Type Qty Price Total Qty
ABC r 5 $$$
h 9 $$$
s 10 $$$ 24
DER a 3 $$$
z 6 $$$ 9
GGG q 12 $$$
w 20 $$$ 32
我一直在尝试GROUP BY,但没有运气。 任何帮助都非常感谢
我将结合使用SQL和itertools.groupby
来执行此操作。
例如,类似:
results = cxn.execute("SELECT * FROM orders ORDER BY Company")
for company, orders_iter in itertools.groupby(results, key=lambda r: r[0]):
orders = list(orders_iter)
total_qty = sum(order[2] for order in orders)
... print out orders ...
拥有比我更多的SQL-foo的人也许可以提出一个查询,该查询将准确地产生您想要的结果……但这可能是不必要的,尤其是考虑到这,需要进行一些小的修改(在对订单进行迭代的同时计算总数) ),Python代码仅需要O(n)
时间和O(1)
内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.