我的products
表格中包含jsonb类型specs
列。
这个json中的一个关键是brand
。
我可以成功运行这样的查询:
SELECT specs ->> 'brand' AS brand, COUNT(*) FROM products GROUP BY brand;
brand | count
-------------+-------
Acer | 9
Dell | 4
XPS 15 | 1
Apple | 1
Lenovo | 2
Gigabyte | 1
Eluktronics | 5
Asus | 2
HP | 1
如何使用活动记录查询界面运行此查询?
我尝试过类似的事情:
Product.select("specs ->> 'brand' AS brand").group('brand').count
但它不起作用我得到了:
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "AS"
LINE 1: SELECT COUNT(specs ->> 'brand' AS brand) AS count_specs_bran...
^
: SELECT COUNT(specs ->> 'brand' AS brand) AS count_specs_brand_as_brand, brand AS brand FROM "products" GROUP BY brand
from (irb):1
答案 0 :(得分:0)
以下内容应该有效并且更贴近活动记录ORM查询界面:
Product.all.group("specs ->> 'brand'").count
您不应该包含别名AS brand
;活动记录将为此提供自己的别名,您可以在尝试此语句后在rails console
中查看。