mysql - Rails sql查询,过滤上千条记录汇总一列

标签 mysql ruby-on-rails-3 activerecord sum

我有一个包含数千行的数据库表。我想运行一份报告,基本上列出所有在我们这里花费超过 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 列总和小于 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.

如有任何帮助和/或指点,我们将不胜感激!

最佳答案

你可以试试:

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/

相关文章:

mysql - 在 Groovy/Gradle 中执行 Sql 脚本文件

ruby-on-rails - Rails 3 : DEPRECATION WARNING: config. action_view.debug_rjs 将在 3.1 中移除

ruby-on-rails - 路由错误 - 未初始化的常量 UsersController? omn​​iauth-facebook

linux - git sudo 用户访问被拒绝

ruby-on-rails-3 - 如何始终包含用于急切加载的模型

ruby-on-rails - Rails 使用另一个模型的数据填充模型

php - 我的 web 应用程序的自定义 OAuth 流程,其中 oAuthClient 是我的,oAuthServer 也是我在 YII2 中的

php - 您的 SQL 语法有误

java - 如何从 java.sql.Connection 对象中检索密码

ruby-on-rails - 如何找出哪个 Ruby gem 劫持了 ActiveRecord 关联方法