结果显示为:
animal age id
tiger 10 1
tiger 11 2
..
monkey 10 12
monkey 10 13
...
elephant 10 20
elephant 11 21
..
等等200多种都各显示5条
请问要如何实现
7 个解决方案
#1
select animal,age,id,total from(
select animal,age,id,row_number() over(partition by animal order by id) total from zoon
) rn <= 5
没有验证,思路是这样
#2
select * from
(
select animal,age,id ,row_number()over(partition by animal order by age desc) row_num
from zoon
)where row_num <=5;
显示出了每种动物中年龄最大的前5种animal。
#3
1楼领先了!来迟一步!
#4
首先强烈建议你不要试图用1个sql干这件事。
因为sql返回肯定是一个list
后续还要遍历list把他们按照类型拆分
sql的话呢 就是select * from zoon where animal='xxx1' union select * from zoon where animal='xxx2' union 。。。
这个xxx要先用distinct查出来,然后拼这个大sql。
因为sql返回肯定是一个list
后续还要遍历list把他们按照类型拆分
sql的话呢 就是select * from zoon where animal='xxx1' union select * from zoon where animal='xxx2' union 。。。
这个xxx要先用distinct查出来,然后拼这个大sql。
#5
速度都好快。。
楼主学习下分析函数,你会发现很强大
楼主学习下分析函数,你会发现很强大
#6
疑惑中。。。。
#7
最近有点事不在,不好意思啊,谢谢1楼的答案
#1
select animal,age,id,total from(
select animal,age,id,row_number() over(partition by animal order by id) total from zoon
) rn <= 5
没有验证,思路是这样
#2
select * from
(
select animal,age,id ,row_number()over(partition by animal order by age desc) row_num
from zoon
)where row_num <=5;
显示出了每种动物中年龄最大的前5种animal。
#3
1楼领先了!来迟一步!
#4
首先强烈建议你不要试图用1个sql干这件事。
因为sql返回肯定是一个list
后续还要遍历list把他们按照类型拆分
sql的话呢 就是select * from zoon where animal='xxx1' union select * from zoon where animal='xxx2' union 。。。
这个xxx要先用distinct查出来,然后拼这个大sql。
因为sql返回肯定是一个list
后续还要遍历list把他们按照类型拆分
sql的话呢 就是select * from zoon where animal='xxx1' union select * from zoon where animal='xxx2' union 。。。
这个xxx要先用distinct查出来,然后拼这个大sql。
#5
速度都好快。。
楼主学习下分析函数,你会发现很强大
楼主学习下分析函数,你会发现很强大
#6
疑惑中。。。。
#7
最近有点事不在,不好意思啊,谢谢1楼的答案