按Hstore键分组PostgreSQL和ROR应用程序

时间:2012-12-26 09:00:42

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

我正在研究一个ROR应用程序,我使用Hstore和PostgreSQL数据库,我问我是否可以通过桌面上的Hstore键进行分组?

我这样做了:

select state , count(*) from infractions group by details -> 'commune';`

但是我收到了这个错误:

column "infractions.state" must appear in the GROUP BY clause or be used in an aggregate function

详细信息是Hstore列,她是我的详细信息示例:

"adress"=>"", "commune"=>"14", "province"=>"6", "description"=>"Ce fichier est sous licence Creative Commons"

感谢

1 个答案:

答案 0 :(得分:2)

当他们从MySQL迁移时,人们会偶尔遇到这种情况。 MySQL允许从GROUP BY子句中省略列。 PostgreSQL没有。您的实际问题是您缺少州列。你有两个选择。如果你想只拉一个状态,你可以把它放在这样的聚合中:

select max(state) , count(*) from infractions group by details -> 'commune';

如果你想按州分组,你可以:

select state , count(*) from infractions group by state, details -> 'commune';