Tag: 聚合

使用Arel生成子查询以获得平均值

可以说我有几张桌子 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` […]

Ruby Rails具有聚合函数和DayOfWeek的复杂SQL

Rails 2.3.4 我搜索谷歌,并没有找到我的困境的答案。 对于这个讨论,我有两个模型。 用户和条目。 用户可以拥有多个条目(每天一个)。 条目具有值和sent_at日期。 我想查询并显示用户BY DAY OF WEEK的条目的平均值。 因此,如果用户输入了过去3周的值,我想显示星期日,星期一等的平均值。在MySQL中,它很简单: SELECT DAYOFWEEK(sent_at) as day, AVG(value) as average FROM entries WHERE user_id = ? GROUP BY 1 该查询将返回0到7条记录,具体取决于用户至少有一个条目的天数。 我查看了find_by_sql,但在我搜索Entry时,我不想返回一个Entry对象; 相反,我需要一个长达7天的平均数组… 此外,我关注这一点的性能,因为我们希望在用户登录时将其加载到用户模型,以便可以在其仪表板上显示。 欢迎任何建议/指示。 我对Rails比较陌生。

Rails中的composed_of – 什么时候使用它?

什么时候应该使用ActiveRecord的composed_of类方法?

Rails的Active Record可以处理SQL聚合查询吗?

刚开始学习活动记录,我想知道如何最好地从涉及SQL聚合查询的多个表中检索数据。 在以下示例中(来自医疗应用程序)我正在为每位患者寻找各种类型的最新事件(例如,上次访问,最后一次实验室测试等)。 正如您从下面的SQL查询中看到的,我正在寻找分组查询中的max(date)值。 我使用find_by_sql来执行此操作 – 但是我想看看如何在不使用find_by_sql的情况下执行此操作。 IOW – 如何使用纯ActiveRecord方法获取所需数据。 下面是我正在测试的表和类defs: 通过Sql查找以检索每种类型的最新条目 – 请注意这里的’max(event_date)’ strsql = “select p.lname, e.patient_id, e.event_type, max(e.event_date) as event_date from events e inner join patients p on e.patient_id = p.id group by p.lname, e.patient_id, e.event_type” 这是示例sql查询结果: lname,patient_id,event_type,latest ‘Hunt’,3,’Labtest’,’2003-05-01 00:00:00’ ‘Hunt’,3,’Visit’,’2003-03-01 00:00:00’ ‘Seifer’,2,’Labtest’,’2002-05-01 00:00:00’ ‘Seifer’,2,’访问’,’2002-03-01 00:00:00’ 表关系是: 表—>患者 – >事件 – >访问 – […]