这里是桌子
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
如果要一行,请使用ORDER BY
和LIMIT
:
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;
@@ GAURAV Sharma您不需要使用HAVING
,只需使用ORDER BY
语句和LIMIT 1
:
SELECT CUST_ID,
COUNT(CUST_ID) AS C
FROM BANK_FD_ACCOUNT
GROUP BY CUST_ID
ORDER BY c DESC
LIMIT 1;