SQL finding person条目的狗数最多
人(身份证、狗) 我怎么才能找到养狗最多的人呢SQL finding person条目的狗数最多,sql,oracle,plsql,Sql,Oracle,Plsql,人(身份证、狗) 我怎么才能找到养狗最多的人呢 select * from person p1 where p1.id in ( select p2.id from person p2 where p1.id = p2.id having count(dogs > ( select p3.id ...etc 我是在正确的轨道上,还是这行不通? 感谢您的浏览订购并乘坐第一排: SELECT * FROM person ORDER BY dog
select *
from person p1
where p1.id in (
select p2.id
from person p2
where p1.id = p2.id
having count(dogs > (
select p3.id ...etc
我是在正确的轨道上,还是这行不通?
感谢您的浏览订购并乘坐第一排:
SELECT *
FROM person
ORDER BY dogs DESC
LIMIT 1
请注意,仅获取第一行的方法
因为您没有指定数据库,所以这只是一个示例。对于SQL Server,您可以使用选择TOP 1
现在我看到你已经更新了你的问题。对于Oracle,您可以使用
这个怎么样
select *
from person
where dogs = (select max(dogs) from person)
可能不是最有效的方法,但这会给你的人(或人)有最大的狗计数。如果您只想要其中一个,您可以这样做:
select top 1
from person
order by dogs desc
假设狗是关于人的专栏,使用
rank()
分析函数是最干净的方法。按狗降序意味着拥有最多狗的人排名为1
select * from
( select p.*
rank() over (order by p.dogs desc) as rnk
from person p )
where rnk = 1
/
rank()
的优点是,如果两个人拴在一起的狗最多,那么两排狗都会返回。根据业务逻辑,这通常是一个理想的结果。若您真的必须有一行,那个么您需要更强的分区条件或更精细的排序条件。或者,如果您不担心您得到的是哪一条绑定记录,那么解析row\u number()
保证返回一行
Oracle具有一系列强大的分析功能 您使用的是哪个数据库?它的oracle数据库,效率并不重要,因为它相当小(几百个条目),非常感谢回复的
限制
不是有效的oraclesyntax@APC:语法因数据库而异。我会更新我的答案,提到这一点。
select * from
( select p.*
rank() over (order by p.dogs desc) as rnk
from person p )
where rnk = 1
/