2015-12-30 4 views
2

я следующие запросы и наборы результатовOracle 11g: LIMIT OFFSET на сгруппированных данных

enter image description here

Первые данные ООН-группироваться и второй сгруппированы по «категории». Мои цели - использовать разбиение на страницы на эти сгруппированные данные, однако, поскольку Oracle 11g не поддерживает LIMIT и OFFSET, это стало проблемой.

Я рассмотрел этот вопрос для идей;

How to add offset in a "select" query in Oracle 11g?

Однако я не хочу использовать ИНЕК, поскольку она исключает запись из группы.

SELECT MAX(tb_test_1.category) as category, COUNT(tb_test_1.category) as count 
FROM tb_test_1 
GROUP BY tb_test_1.category 

Может кто-нибудь сказать мне, как использовать LIMIT и OFFSET по вышеуказанному запросу в Oracle 11g?

Спасибо

+0

Возможный дубликат [Как добавить смещение в запрос «выбрать» в Oracle 11g?] (http://stackoverflow.com/questions/27099414/how-to-add-offset-in-a-select-query-in-oracle-11g) –

+0

Но вопрос вы уже есть ответ, т. е. использовать ** ROWNUM ** дважды, 'внутренний запрос' и' внешний запрос' соответственно. –

ответ

0

Это широко известный вопрос и, вероятно, много отвеченных дублей существуют, но в любом случае в вашем случае этот запрос должен работать:

select * from (

    select rownum offset, rs.* from (

     SELECT MAX(t.category) as category, 
       COUNT(t.category) as count 
     FROM tb_test_1 t 
     GROUP BY t.category 
     /* add order by clause here if needed */ 

    ) rs 

) where rownum <= 10 /* limit */ 
    and offset >= 0 /* offset */ 
+0

Точно, на что ответили в теме, отмеченной как дубликат. –