首页 > 解决方案 > 查找多次出现

问题描述

这是表格:

account no.  cust_id    Month  Installment  Status
5212340001   1002        30    15000         Closed
5212340002   1002        66    25000         Active
5212340003   1007        36    80555         Closed
5212340004   1003        60    30000         Active

我想找到拥有多个帐户的 cust_id 的最大出现次数。这是我的代码:

SELECT CUST_ID,COUNT(CUST_ID) AS C
FROM BANK_FD_ACCOUNT
GROUP BY CUST_ID
HAVING C=MAX(C);

我收到错误。但是预期的输出应该是这样的:

cust_id    c
1002       2

标签: sqloraclerdbms

解决方案


在 MySQL 中(因为问题最初被标记),您可以使用 useORDER BYLIMIT返回一行:

SELECT CUST_ID, COUNT(CUST_ID) AS C
FROM BANK_FD_ACCOUNT
GROUP BY CUST_ID
ORDER BY C DESC
LIMIT 1;

如果出现重复,这将返回任意客户。如果您想要所有这些,请使用RANK()

SELECT c.*
FROM (SELECT CUST_ID, COUNT(*) AS C,
             RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
      FROM BANK_FD_ACCOUNT
      GROUP BY CUST_ID
     ) c
WHERE seqnum = 1;

您可以使用ROW_NUMBER()返回一行(类似于LIMITMySQL 示例中的)。


推荐阅读