1

我有一个包含数千行的数据库表。我想运行一份报告,基本上列出所有在我们这里花费超过 2,000 英镑的客户。

该表有很多列,但我感兴趣的列如下:

======================================================
|  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 列。然后我需要通过删除 Payments 列总和小于 2,000 英镑的任何内容来过滤它们。我还需要忽略 PVID 为 44444 的任何行。

到目前为止,我知道我将需要类似于以下内容:

@clinical = Clinical.where("ShortText LIKE 'Paid by PET HEALTH' AND PVID != 44444")

这负责过滤行以排除 PVID 为 44444 的任何内容,并且仅显示 ShortText 包含由 PET HEALTH 支付的行。

我不知道如何总结每个 ClientKey 的支付列。

我想要的最终结果是能够做到这一点:

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.

任何帮助和/或指针将不胜感激!

4

1 回答 1

3

你可以试试:

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

有关分组的更多信息,请参阅rails 指南 - ActiveRecord 查询接口

于 2012-05-01T05:34:32.770 回答