繁体   English   中英

Python Sqlite3高级分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM