首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails-5中的按数组列值分组

Rails-5中的按数组列值分组
EN

Stack Overflow用户
提问于 2019-06-24 15:28:31
回答 1查看 184关注 0票数 0

我有一个有趣的问题

我希望按表的数组列中的单个值进行计数

例如,用于

对于用户模型

代码语言:javascript
复制
id |  community_ids
1  |  {2, 4}
2  |  {2, 5} 
3  |  {2, 4}

我想说

代码语言:javascript
复制
Community| User count
  2      | 3
  4      | 2
  5      | 1

我有一个解决方案

代码语言:javascript
复制
User.
  pluck(Arel.sql('unnest(community_ids) as community_id')).
  group_by(&:itself).
  transform_values(&:count)

但问题是我遍历了所有的用户

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 21:38:06

SQL版本可能类似于:

代码语言:javascript
复制
SELECT unnest(community_ids) AS community_id, count(*) AS count
FROM users 
GROUP BY community_id;

将它映射到rails AR也很简单,可以用不同的方式来完成,我将使用最简单的转储方式:

代码语言:javascript
复制
sql = "SELECT unnest(community_ids) AS community_id, count(*) AS count
FROM users 
GROUP BY community_id"
results = ActiveRecord::Base.connection.execute(sql).to_a
# results should look something like: [{"community_id"=>2,"count"=>3}...]

PS:这种方法取自。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56731702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档