oracle 分组取前10条

2019-04-19  本文已影响0人  晓码君
TITLE 表统计数据如下图:
SELECT NAME, COUNT(ID)
FROM TITLE
GROUP BY NAME
ORDER BY COUNT(ID) DESC
NAME    COUNT(ID)
TEST4   13
TEST5   11
TEST2   11
TEST1   2
TEST3   1
获取所以不同的NAME的前10个ID数据,如下,TEST1取了2、TEST3取了1,其他超过10条的只取了前10条
SELECT * FROM (
    SELECT T.*, (ROW_NUMBER() over (PARTITION BY NAME ORDER BY ID)) RN FROM TITLE T
) WHERE RN < 11
ID  NAME    RN
1   TEST1   1
4   TEST1   2
1   TEST2   1
5   TEST2   2
6   TEST2   3
7   TEST2   4
8   TEST2   5
9   TEST2   6
10  TEST2   7
11  TEST2   8
12  TEST2   9
13  TEST2   10
2   TEST3   1
2   TEST4   1
3   TEST4   2
4   TEST4   3
5   TEST4   4
6   TEST4   5
7   TEST4   6
8   TEST4   7
9   TEST4   8
10  TEST4   9
11  TEST4   10
3   TEST5   1
5   TEST5   2
6   TEST5   3
7   TEST5   4
8   TEST5   5
9   TEST5   6
10  TEST5   7
11  TEST5   8
12  TEST5   9
13  TEST5   10
上一篇 下一篇

猜你喜欢

热点阅读