这里是我的数据集(以哈希形式,因为我使用的红宝石宝石续集);哈希名称的列名:如何将这些不同的列放入PostgreSQL的同一行?
{:item_category=>"Bacon", :year=>1890, :avg_yr_value=>0.12}
{:item_category=>"Eggs (dozen)", :year=>1890, :avg_yr_value=>0.208}
{:item_category=>"Bacon", :year=>1891, :avg_yr_value=>0.126}
{:item_category=>"Eggs (dozen)", :year=>1891, :avg_yr_value=>0.221}
{:item_category=>"Bacon", :year=>1892, :avg_yr_value=>0.129}
{:item_category=>"Eggs (dozen)", :year=>1892, :avg_yr_value=>0.221}
{:item_category=>"Bacon", :year=>1893, :avg_yr_value=>0.142}
{:item_category=>"Eggs (dozen)", :year=>1893, :avg_yr_value=>0.224}
{:item_category=>"Bacon", :year=>1894, :avg_yr_value=>0.185}
这里是我的代码:
SELECT
string_agg(DISTINCT item_category, ' + ' ORDER BY item_category) AS items,
year,
sum(avg_yr_value) AS amount
FROM
earnings_and_prices
WHERE
item_category = 'Bacon' OR
item_category = 'Eggs (dozen)'
GROUP BY
year
HAVING
COUNT(DISTINCT item_category) = 2
ORDER BY
year
我的结果(哈希值,因为我使用了红宝石的宝石续集):
{:items=>"Bacon + Eggs (dozen)", :year=>1890, :amount=>0.328}
{:items=>"Bacon + Eggs (dozen)", :year=>1891, :amount=>0.347}
{:items=>"Bacon + Eggs (dozen)", :year=>1892, :amount=>0.35}
{:items=>"Bacon + Eggs (dozen)", :year=>1893, :amount=>0.366}
我想修改自己的代码,以便它会包括:量“培根”和:量“鸡蛋(打)”,类似这样的,例如:
{:items=>"Bacon + Eggs (dozen)", :year=>1890, :amount=>0.328, :eggs_price=>0.208, :bacon_price=>0.12}
我如何做到这一点?
意思具有每个项目的个别量到_items_输出列,如“10×培根+ 20×蛋”? – ubik
啊,对不起。我已经添加了一个我想要的例子。 – user1626730