活动记录组由两个单独的值组成

时间:2016-04-04 20:39:42

标签: sql ruby-on-rails ruby activerecord

我有一个名为Documents的表格(部分)如下所示。有文档ID,文件类型和user_id。

id     type  user_id
1      PDF    1 
2      PDF    1 
3      PDF    2 
4      PDF    3 
5      JPG    1 
6      JPG    3 
7      JPG    3 
8      JPG    3 
9      JPG    1
10     PNG    2 
11     PNG    2

我要做的是计算有多少用户上传了不同的文件类型。所以鉴于上面的数据......我想要的是:

{"PDF" => 3, "JPG" => 2, "PNG" => 1}

含义3 不同用户上传了PDF,2个不同用户上传了JPG等。

我尝试了Document.group(:user_id).group(:type).count,但这给了我一个巨大的哈希,每个user_id / type组合计数......

2 个答案:

答案 0 :(得分:3)

使用纯SQL:

SELECT type, COUNT(DISTINCT user_id) AS cnt 
FROM Documents 
GROUP BY type;

LiveDemo

答案 1 :(得分:1)

你可以这样做

Document.select('distinct user_id').group(:type).count