1

使用する

Ruby  1.9.3-p194  
Rails 3.2.8

これが私が必要なものです。
さまざまな人材(human_resource_id)を数え、これを割り当ての総数(assignment_id)で割ります。したがって、以下に示すダミーデータの答えは次のようになります。

人的資源あたり1.5の割り当て

しかし、私はもうどこに行けばいいのかわかりません。
これが私が試したことです:

テーブル名:割り当て

id       | human_resource_id | assignment_id | assignment_start_date | assignment_expected_end_date
80101780 | 20200132          | 80101780      | 2012-10-25            | 2012-10-31
80101300 | 20200132          | 80101300      | 2012-07-07            | 2012-07-31
80101308 | 21100066          | 80101308      | 2012-07-09            | 2012-07-17

最初に、「見る」必要のある期間を選択する必要があります。これは常に1年前の最大値からです。

a = Assignment.find(:all, :conditions => { :assignment_expected_end_date => (DateTime.now - 1.year)..DateTimenow })
=> [
#<Assignment id: 80101780, human_resource_id: "20200132", assignment_id: "80101780", assignment_start_date: "2012-10-25", assignment_expected_end_date: "2012-10-31">, 
#<Assignment id: 80101300, human_resource_id: "20200132", assignment_id: "80101300", assignment_start_date: "2012-07-07", assignment_expected_end_date: "2012-07-31">, 
#<Assignment id: 80101308, human_resource_id: "21100066", assignment_id: "80101308", assignment_start_date: "2012-07-09", assignment_expected_end_date: "2012-07-17">
]

foo = a.group_by(&:human_resource_id)

今、私は美しい「オブジェクトのハッシュの配列」を取得しましたが、次に何をすべきかわかりません。

誰かが私を助けることができますか?

4

2 に答える 2

2

SQLでリクエストを実行してみることができます:

ActiveRecord::Base.connection.select_value('SELECT count(distinct human_resource_id) / count(distinct assignment_id) AS ratio FROM assignments');
于 2012-12-03T14:56:32.250 に答える
1

あなたは次のようなことをすることができます

human_resource_count = assignments.collect{|a| a.human_resource_id}.uniq.count
assignment_count = assignments.collect{|a| a.assignment_id}.uniq.count

result = human_resource_count/assignment_count
于 2012-12-03T14:52:48.113 に答える