Limitar linhas em uma consulta: row_limiting_clause – Oracle Database

Cláusulas row_limiting_clause

A cláusula row_limiting_clause em bancos de dados Oracle pode ser empregada para a criação de consultas do tipo Top-N, ou seja, relatórios que retornam os N primeiros (ou últimos) itens de uma consulta, em vez de retornar o conjunto de resultados completo. Também é útil para análise de dados, visualização de amostras de registros e outras tarefas.

A quantidade de linhas retornadas pode ser especificada por número de linhas ou porcentagem de linhas, usando a palavra-chave FETCH_FIRST.

Além disso, é possível usar a palavra-chave OFFSET (deslocamento) para especificar que as linhas retornadas devem iniciar após uma linha de número específico – ou seja, que serão puladas algumas linhas; neste caso, deve-se ordenar as linhas usando a cláusula ORDER BY.

Observação: não é possível usar esta cláusula em uma subconsulta de uma declaração DELETE ou UPDATE.

Sintaxe

SELECT colunas FROM tabelas
[WHERE condição]
[ORDER BY coluna]
[OFFSET deslocamento { ROW | ROWS }]
[FETCH { FIRST | NEXT } [ num_linhas | porcentagem PERCENT}]
 { ONLY | WITH TIES }]

Significado das palavras-chave

  • OFFSET: Permite especificar o número de linhas a pular antes de iniciar a limitação de linhas, em valor numérico. Por exemplo, se se deseja retornar as linhas a partir da 5º linha, usamos OFFSET 5.
  • ROW | ROWS: Pode-se usar estas palavras de forma intercambiável. Fornecidas para clareza semântica.
  • FETCH: Cláusula para especificar o número de linhas ou a porcentagem de linhas a retornar.
    FIRST | NEXT: Pode-se usar estas palavras de forma intercambiável. Fornecidas para clareza semântica.
  • num_linhas | porcentagem PERCENT: num_linhas é o número de registros que se deseja retornar; porcentagem é o valor percentual, em forma de número.
  • ONLY | WITH TIES: A palavra ONLY é usada para retornar exatamente o número ou porcentagem especificada de linhas; WITH TIES retorna linhas adicionais que tenham o mesmo número de posição da última linha retornada (por exemplo, se retornamos 10 itens, mas na décima posição há três itens “empatados”, os três serão retornados também com WITH TIES).

Exemplos

1 – Retornar apenas os 5 primeiros empregados da tabela employees, por ordem de ID, incluindo o próprio ID e primeiro nome:

SELECT employee_ID, first_name
FROM employees
ORDER BY employee_ID
FETCH FIRST 5 ROWS ONLY;

Limitar linhas em consultas no Oracle Database - Fetch First

Note que “FETCH FIRST 5 ROWS ONLY” pode ser traduzido literalmente como “Pegue as 5 primeiras linhas apenas”.

2 – Retornar 5 empregados da tabela employees, por ordem de ID, a partir do sexto ID cadastrado (funcoinários 6 a 10), incluindo o próprio ID e o primeiro nome:

SELECT employee_ID, first_name
FROM employees
ORDER BY employee_ID
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;

offset em resultados de consultas no oracle database com fetch

Em ambos os exemplos retornamos linhas a partir do início da tabela. Também podemos retornar linhas a partir do final da tabela, bastando para isso efetuar a ordenação de forma descendente (com a palavra-chave DESC no ORDER BY). Veja o próximo exemplo:

3 – Queremos saber quais os cinco maiores salários e respectivos funcionários, do maior para o menor:

SELECT employee_ID, first_name, salary
FROM employees
ORDER BY salary DESC
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;

 

Até a próxima!

 

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*