Postgres hstore查询在Rails中返回多个值

时间:2013-08-28 00:22:24

标签: sql ruby-on-rails ruby rails-postgresql hstore

我正在使用Ruby on Rails处理这些宝石:

gem "pg",                           "~> 0.15.1"
gem "postgres_ext",                 "~> 0.3.0"
gem "activerecord-postgres-hstore", "~> 0.7.6" 

Active Record解决方案更可取,但严格的sql答案可行。

我有一个带有项目hstore列的购物车表。此列中的示例条目是:

{"1614"=>{:quantity=>"100"}, "1938"=>{:quantity=>"50"}, "1614"=>{:quantity=>"50"}, "1983"=>{:quantity=>"100"}, "1322"=>{:quantity=>"10"}, "1691"=>{:quantity=>"25"}, "1734"=>{:quantity=>"20"}}

您会注意到哈希中有一个重复的ID(1614),但其数量不同。

我想写一个查询,它将返回一个包含项目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"}

0 个答案:

没有答案