我正在使用这些宝石与 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 列的 carts 表。此列中的示例条目是:
{"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"}