日期:2014-05-16 浏览次数:20866 次
--不用自己定义吧! --sql1: SELECT N,row_number() over(ORDER BY n DESC) rn FROM t --result: 7820 1 7176 2 5428 3 77 4 55 5 30 6 25 7 --sql2 SELECT N FROM ( SELECT N,row_number() over(ORDER BY n DESC) rn FROM t) WHERE rn=1 --result 7820 SELECT N FROM ( SELECT N,row_number() over(ORDER BY n DESC) rn FROM t) WHERE rn=2 --result: 7176
------解决方案--------------------
楼主要实现的功能应该不能在自定义聚合函数中实现,因为首先要把所有值排序才能得到第N大的值,这就需要多次循环,而聚合函数只有一次循环.
------解决方案--------------------
实测请参考:
查询所有:
查询第一大的
查询第三大的
------解决方案--------------------
row_number() over(ORDER BY n DESC)