我遇到了一个任务,我设法完成了目标,但是我得到的解决方案并不是最优的,我需要更优秀的解决方案。我已经使用了普通子查询,也许相关子查询可以更好地解决这个问题。
这是我创建的表:
SELECT custid,
count(DISTINCT bid) AS Total
FROM loan
GROUP BY custid;
这个的输出结果如下所示:
![enter image description here](https://istack.dev59.com/Rae36.webp)
custid
。一种方法是使用
Order by Total DESC LIMIT 1
,但这将只给出 1 个结果。我的做法是:
SELECT custid
FROM (SELECT custid,
count(DISTINCT bid) AS Total
FROM loan
GROUP BY custid) c1
WHERE total = (SELECT max(Total)
FROM (SELECT custid,
count(DISTINCT bid) AS Total
FROM loan
GROUP BY custid) c2)
这给了我正确的结果,即
我想做的是减少代码,因为我在这里再次写同样的内容。我知道一定有更简单的方法来做到这一点。也许是相关查询。
期待一些好的答案,这只是为了澄清我的概念。
如果问题太初级,对不起。我是SQL的新手。