これらの宝石を使用して Ruby on Rails を使用しています。
gem "pg", "~> 0.15.1"
gem "postgres_ext", "~> 0.3.0"
gem "activerecord-postgres-hstore", "~> 0.7.6"
Active Record ソリューションが望ましいですが、厳密に sql の回答が機能します。
items hstore 列を持つカートテーブルがあります。この列の入力例は次のとおりです。
{"1614"=>{:quantity=>"100"}, "1938"=>{:quantity=>"50"}, "1614"=>{:quantity=>"50"}, "1983"=>{:quantity=>"100"}, "1322"=>{:quantity=>"10"}, "1691"=>{:quantity=>"25"}, "1734"=>{:quantity=>"20"}}
ハッシュに重複した ID (1614) が 1 つありますが、その数は異なります。
アイテム ID カウントと合計数量を含むテーブルを返すクエリを作成したいと考えています。次のようになります。
item_id | count | total
---------+-------+------
1614 | 2 | 150
1938 | 1 | 50
1983 | 1 | 50
1322 | 1 | 100
私が取り組んでいるクエリは次のとおりです。
SELECT
skeys(carts.items) as item_ids,
COUNT(*) AS count,
svals(carts.items) as items
FROM carts
GROUP BY
skeys(carts.items),
svals(carts.items)
戻り値:
item_id | count | total
---------+-------+------
1614 | 2 | {:quantity=>"150"}
1938 | 1 | {:quantity=>"50"}
1983 | 1 | {:quantity=>"50"}
1322 | 1 | {:quantity=>"100"}