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 に答える