Bóson Treinamentos em Ciência e Tecnologia

Limitar linhas em uma consulta: row_limiting_clause – Oracle Database

limitar linhas com fetch e offset no 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

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;

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;

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!

 

Sair da versão mobile