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;
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!
Escreva um comentário