0

これらの宝石を使用して 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"}
4

0 に答える 0