0

我希望这个问题以前没有被问过。我有一个包含以下列和信息的 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,但没有运气。非常感谢任何帮助谢谢

4

1 回答 1

3

我会结合使用 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)内存。

于 2012-06-06T18:18:23.087 回答