2 つの大学で主要な GPA のトップを取得したい場合、SQL は次のようになります。たとえば、次のようになります。
SELECT major, MAX(GPA) AS GPA FROM
(SELECT major, MAX(GPA) AS GPA FROM UNIVERSITY_1
GROUP BY major
UNION
SELECT major, MAX(GPA) AS GPA FROM UNIVERSITY_2
GROUP BY major)
GROUP BY major
ORDER BY GPA DESC
Arel でそのクエリを表現する方法がわかりません。ユニオンがどのように機能するかわかりません。知っておくとよいでしょう。それまでの間、いつでも find_by_sql を使用して生の SQL から結果セットを取得できます。
編集:
それを行うためのいくぶんRuby/Railsierな方法は次のとおりです。
u_one = UniversityOne.maximum :gpa, :group => 'major'
u_two = UniversityTwo.maximum :gpa, :group => 'major'
u_combined = u_one.merge(u_two) { |k, one, two| [one,two].max }
u_combined
メジャーをキーとし、大学全体の最大 gpa を値とするハッシュになります。