2016-04-04 7 views
4

私はDocumentsと呼ばれるテーブルを持っています(一部は以下のようになります)。ドキュメントID、ファイルタイプ、およびuser_idがあります。2つの別々の値によるアクティブなレコードグループ

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 

私がしようとしているのは、それぞれのファイルタイプをアップロードしたユーザーの数です。したがって、上記のデータ与えられた...私はの線に沿って何か希望:3人の異なるユーザーがPDFファイルをアップロードし、2つの異なるユーザーはJPGのみをアップロードした意味

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

を、など

I純粋なSQLを使用して

+1

それを行うことができます答えとしてあることを追加し、私は解決策として、それをマークします。ありがとう!! – Zack

答えて

1

あなたはlad2025 @このよう

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

... Document.group(:user_id).group(:type).countをやってみましたが、それは私に、カウントを持つすべてのuser_id/typeコンボの巨大なハッシュを与えた:

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

LiveDemo

+0

これはSQLで行う方法です。 – Zack

関連する問題