いくつかのテーブルがあるとしましょう
orders = Arel::Table.new :orders
stores = Arel::Table.new :stores
managers = Arel::Table.new :managers
そして、マネージャーは多くの店舗を持ち、店舗には多くの注文があります。
ある日、マネージャーが働いている注文の平均合計を照会したいと考えています。ああ、それを店ごとにグループ化したい。明確にするために、マネージャーが勤務する店舗ごとに、マネージャーの平均注文合計を取得したいと思います。
そして、マネージャーを検索したとしましょう:
manager = Manager.find(some_id)
totals = orders.where(orders[:store_id].in(manager.store_ids)).group(orders.store_id).project(orders[:total].average)
puts totals.to_sql
"SELECT AVG(`orders`.`total`) AS avg_id FROM `orders` WHERE `orders`.`store_id` IN (1, 2, 3) GROUP BY `orders`.`store_id`"
うん、それはうまくいきます。しかし、これらの平均の平均を求めるクエリを取得するにはどうすればよいでしょうか?
このクエリを取得するための Arel は何ですか?
"SELECT AVG(avg_id) FROM (SELECT AVG(`orders`.`total`) AS avg_id FROM `orders` WHERE `orders`.`store_id` IN (1, 2, 3) GROUP BY `orders`.`store_id`) as avg_id_alias;"
誰か知ってる?