13 07年3月

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

关键字:,
贝贝爸 发表在 原创技术文章 |

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

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

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

  1. select * from ta where b < = (select max (b) mb from (select b from (select b from ta order by b) tb rownum < 6) tc)

1,按b排序取b
2,取6行
3,取最大值mb
4,把小于等于mb的数据都拿出来,
5,done 不知对否,空下来再测试:D

发表评论

美体小铺急救棒 the bodyshop body shop 美体小铺茶树精油 美体小铺接骨木花眼胶 美体小铺VE眼霜
美体小铺急救棒 the bodyshop body shop 美体小铺茶树精油 美体小铺接骨木花眼胶 美体小铺VE眼霜