【发布时间】:2017-06-23 21:19:12
【问题描述】:
我们有一个推荐计划。当被推荐用户订阅时,推荐人应获得第一张发票上应付金额的百分比。
referral_ids = (an array of a bunch of user_ids)
我可以为每个被推荐的用户获得一张发票,如下所示:
invoices = Invoice.where(user_id: referred_user_ids, renewal: false).group(:user_id).pluck(:amount_due)
但是,由于 amount_due 可能因发票而异,我想知道如何确保从 GROUP BY 返回的记录是该组中的第一个/最旧的记录。提前致谢。
【问题讨论】:
-
按创建日期排序?
-
order 将只订购组。我需要每个
grouped项目中的第一个。用 group 调用 order 只会给你结果的顺序。这有意义吗? -
类似于这里发生的事情,但希望简化/使用活动记录:stackoverflow.com/questions/5140785/mysql-order-before-group-by
标签: mysql ruby-on-rails ruby-on-rails-4 activerecord