【问题标题】:Get count for the max date [MYSQL]获取最大日期的计数 [MYSQL]
【发布时间】:2017-08-11 04:14:49
【问题描述】:

我有这个架构

我必须找出在他们的最新帐户(资本*)余额(他们可能有多个帐户)中 balance_value 超过 1.000.000 的客户数量

*资本:balance_type ='资本'

我猜我的查询会返回错误的结果,而且效率低下

SELECT COUNT(DISTINCT customer.customer_id) AS customers
    FROM balance INNER JOIN account ON balance.account_id = account.account_id
    INNER JOIN contract ON account.contract_id = contract.contract_id
    INNER JOIN customer ON customer.customer_id = contract.customer_id
    WHERE  balance.balance_type like '%Capital%' AND balance.balance_value > 1000000
    ORDER BY balance.balance_date DESC

我想我需要一些帮助:S

下载示例数据(将 Data 文件夹移动到 C:/)和脚本以创建架构 https://drive.google.com/file/d/0BxVNamixm4W2SHVadndtWkNBajg/view?usp=sharing

【问题讨论】:

  • 样本数据和预期结果是必要的。

标签: mysql sql select count


【解决方案1】:

你的查询结果是什么?

您期望得到什么样的“正确”结果?

仅供参考,

按 customer_id 分组会比 distinct 更快

如果您知道确切的大写单词,最好使用 EQUAL TO / = 而不是 LIKE(= 比 LIKE 更快)

【讨论】:

  • 结果只是在任何余额行中资本余额超过 1.000.000 的不同客户数量。如您所见,余额表有 balance_date,我需要找到在其 LATEST 余额(我猜是最大日期日期)中资本余额超过 1.000.000 的不同数量的客户。我知道equal更快,但我有像“Capital”这样的行(我不能更改数据)所以我必须使用Like。谢谢!
猜你喜欢
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多