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 に Paid by 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 Query Interfaceを参照してください。

于 2012-05-01T05:34:32.770 に答える