我有一个包含数千行的数据库表。我想写一份报告,基本上列出所有与我们一起消费超过2000英镑的客户。
这个表有很多列,但我感兴趣的列如下:

======================================================
|  ClientKey | PVID | ShortText           | Payments |
======================================================
|  13276     | 76668| Paid by PET HEALTH  | 56.79    |
|  12893     | 62368| Paid by PET HEALTH  | 42.79    |
|  23782     | 87468| Paid by PET HEALTH  | 26.29    |
|  23246     | 79868| Paid by PET HEALTH  |-16.52    |
======================================================

我需要按ClientKey对行进行分组,并对Payments列进行汇总。然后我需要通过删除付款栏金额小于2000英镑的任何内容来过滤它们。我还需要忽略PVID为44444的任何行。
到目前为止,我知道我需要一些类似的东西:
@clinical = Clinical.where("ShortText LIKE 'Paid by PET HEALTH' AND PVID != 44444")

它负责向下过滤行以排除PVID为44444的任何内容,并且只显示ShortText包含Paid by PET HEALTH的行。
我不知道如何总结每个客户机的付款栏。
我希望的最终结果是能够做到这一点:
Client Key 13276 has spent £99,999 so far.
Client Key 21342 has spent £3,200 so far.
Client Key 32312 has spent £2,110 so far.

任何帮助和/或提示都将不胜感激!

最佳答案

您可以尝试:

Clinical.select("ClientKey as client_key, sum(Payments) as total_payments").group("ClientKey").where("ShortText LIKE 'Paid by PET HEALTH' AND PVID != 44444")

有关分组的更多信息,请参阅rails guide - ActiveRecord Query Interface

关于mysql - Rails sql查询,过滤数千条记录并汇总一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10389046/

10-13 04:57