1

我的 Rails 3 应用程序中有以下代码。

@clinical_healthplan_spend = Clinical.select("ClientKey as client_key, PVID as animal_key, sum(Payments) as total_payments")
                                 .where("ClinicalText LIKE 'Paid by PET HEALTH' AND PVID != 44444")
                                 .order("sum(Payments) DESC")
                                 .group("animal_key")

我正在努力实现以下目标:

  1. 首先按最高的 total_payments 排序结果。
  2. 通过 total_payment 值至少为 1500 的记录限制表。

对于第一个要求;

.order("sum(Payments) DESC")

不起作用,也不行

.order("total_payments DESC")

对于第二个要求;

.where("total_payments > 1500")

不起作用。

我是否将条件放在正确的位置,或者在使用 sum 选项时是否有不同的方法?

任何帮助,将不胜感激!

4

1 回答 1

4

而不是where,您必须使用having. 在你的group你必须包括所有没有聚合的字段。在这种情况下animal_keyclient_key。除此之外,我看不到您的代码有任何问题。这应该有效:

Clinical.select('ClientKey as client_key, PVID as animal_key, sum(Payments) as total_payments')
  .where("ClinicalText LIKE 'Paid by PET HEALTH' AND PVID != 44444")
  .group('animal_key, client_key')
  .having('sum(Payments) > 1500')
  .order('sum(Payments) DESC')
于 2012-05-01T13:17:45.490 回答