oracle中实现sql server的select top n with ties中的ties


设有表ta有2个字段,a和b,要取按b排序前五名的数据,但是如果第六名和第七名数值一样,那么这条数据也要,如果第一名的值并列5个,那么所有符合结果的b值只有一个,依次类推。

a b
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5

鉴于所有数值都有可能会重复,故写伪代码如下:

select * from ta where b < = (select max (b) mb from (select b from (select b from ta order by b) tb rownum < 6) tc) [/code] 1,按b排序取b 2,取6行 3,取最大值mb 4,把小于等于mb的数据都拿出来, 5,done[/code][code] 不知对否,空下来再测试:D[/code]


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据