2013-07-19 32 views
0

如何從下面的表中選擇前3個計數。我知道它可以通過使用ORDER BYROWNUM組合就可以實現,但我希望它以這樣一種方式顯示:
如果與計數的ID是相同的,同數量的所有ID應顯示在一起sinselect前n個記錄(除了使用orderBy和rownum)

ID   COUNT 
----------- ----------------- 
a   4 
b   2 
c   3 
d   2 
e   1 

我使用SQL Plus中

回答

3

最簡單的方法是用dense_rank()解析函數:

select id, count 
from (select t.*, 
      dense_rank() over (order by count desc) as seqnum 
     from t 
    ) t 
where seqnum <= 3 
0

這裏有一個通用查詢

SELECT 
    * 
FROM 
    mytable a 
WHERE 
    3 > (SELECT count(1) FROM mytable b where b.count > a.count)