1

これが私のデータセットです(読みやすいようにCSV形式で):

item_category,year,price
"Bacon",1890,0.12
"Bacon",1891,0.126
"Bacon",1892,0.129
"Bacon",1893,0.142
"Eggs (dozen)",1890,0.208
"Eggs (dozen)",1891,0.221
"Eggs (dozen)",1892,0.221
"Eggs (dozen)",1893,0.224

毎年のベーコンと卵の価格の合計を求めたい. したがって、私が望む結果は次のようになります。

item_category,year,price
"Bacon and eggs",1890,0.328
"Bacon and eggs",1891,0.347
"Bacon and eggs",1892,0.35
"Bacon and eggs",1893,0.366

私は SQL の初心者で、Self-Join メソッドを調べてきましたが、探しているものとはまったく違うようです。基本的に今のところアイデアが不足しています。

それが役に立てば、Ruby で Sequel gem を使用する方法も知っています。

4

2 に答える 2

1

自己結合ではなく、関数を探して集約しているようGROUP BYです:

SELECT string_agg(DISTINCT item_category, ' and ' ORDER BY item_category)
                                                                   AS items
     , year
     , sum(price) AS price
FROM   tbl
GROUP  BY year
ORDER  BY year

string_agg(DISTINCT item_category, ' and ' ORDER BY item_category)オプションで、異なる名前を連結して新しいラベルを自動的に形成します。あなたのために働くかもしれません。それ以外の場合は、静的ラベルに置き換えてください。

于 2012-09-28T18:47:22.897 に答える
1
select "Bacon and eggs", year, sum(price) 
from    table_name 
group by "Bacon and eggs", year
order by year; 
于 2012-09-28T18:47:54.180 に答える