首页 > 解决方案 > 查找具有最大预订数的人的个人资料_id

问题描述

我有一张如下表。我想找到具有最大 Book_id 数量的 profile_id。

PROFILE_ID    BOOK_ID
---------- --------------------
A1         001
A2         002
A3         003
A1         004
A3         005
A1         006
A4         007
A1         008
A2         009
A4         010
A3         011

所以,首先我需要计算不同的profile_id完成了多少预订,我做了如下

SQL>select profile_id, count(book_id) from book group by pro;

PROFILE_ID       COUNT(BOOK_ID)
---------- --------------
A4                      2
A3                      3
A1                      4
A2                      2 

但我希望查询返回具有最大预订计数的 profile_id。为此,我使用了以下查询

select profile_id from(select profile_id, count(book_id) no_of from book group by pro) deriv where deriv.no_of=max(deriv.no_of);

但它不会返回具有最大预订次数的 profile_id。我尝试了许多不同的查询,但它不起作用。谁能帮帮我吗。我正在尝试编写一个通用查询,但不是针对这个特定的表。一点点帮助我就会很多。谢谢

标签: sqloracle

解决方案


试试这个查询,我认为你需要订单

select profile_id, count(book_id) as no_of 
from book 
group by pro
order by no_of desc
limit 1

当您需要超过 1 个结果时更新:

SELECT profile_id,
       count(book_id) AS no_of
FROM tbl1
GROUP BY profile_id
HAVING no_of =
  (SELECT max(no_of)
   FROM
     (SELECT profile_id,
             count(book_id) AS no_of
      FROM tbl1
      GROUP BY profile_id) tblAlias1)

推荐阅读