O programador Luiz está acessando uma tabela armazenada em ...

Próximas questões
Com base no mesmo assunto
Q3874353 Banco de Dados
O programador Luiz está acessando uma tabela armazenada em um banco de dados PostgreSQL. A cláusula que Luiz deve utilizar para retornar 20 registros, pulando os 40 primeiros, é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: A questão cobra a sintaxe de paginação do PostgreSQL para limitar resultados e deslocar o início da leitura.

Tema central: Paginação no PostgreSQL
Análise das alternativas
A
Errada
Está errada porque usa TOP e o operador :: em uma construção incompatível com a sintaxe de limitação/paginação pedida no PostgreSQL. Não é uma forma válida para retornar N linhas após ignorar M linhas nesse SGBD.
B
Errada
Está errada porque usa TOP, que não é a cláusula adequada no PostgreSQL para esse caso, e ainda não expressa corretamente a lógica pedida de retornar 20 e pular 40. A sintaxe válida exigiria LIMIT para a quantidade e OFFSET para o descarte inicial.
C
Errada
Está errada porque, embora LIMIT 20 corresponda à quantidade de registros desejada, START 40 não é a palavra-chave usada pelo PostgreSQL para ignorar registros nessa construção. O termo correto é OFFSET.
D
Certa
A alternativa D aplica a sintaxe de restrição de linhas adotada pelo PostgreSQL para esse caso. LIMIT define quantos registros serão retornados, e OFFSET define quantos registros iniciais serão desconsiderados; portanto, para trazer 20 após pular 40, a construção correta é LIMIT 20 OFFSET 40.
E
Errada
Está errada porque a forma apresentada com FETCH e OFFSET está sintaticamente inadequada/incompleta para o PostgreSQL. Pela base, não se pode afirmar que FETCH seja sempre errado no PostgreSQL; o erro é a alternativa como foi redigida.
Pegadinha da questão
Trocar OFFSET por uma palavra intuitiva, mas incorreta, na paginação do PostgreSQL.
Dica para questões semelhantes
  • Em PostgreSQL, a quantidade de registros vai em LIMIT e o deslocamento vai em OFFSET.
  • Se a alternativa usar outra palavra para pular registros, desconfie: aqui a cláusula correta é OFFSET.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

LIMIT: Restringe o nº de linhas retornadas por uma consulta.

x

OFFSET: Pula um nº específico de linhas antes de iniciar a retornar as linhas da consulta.

Gabarito: letra D.

É LIMIT com OFFSET, pois START não funciona nesse contexto. START é usado no contexto de TRANSACTIONS, mais especificamente pra iniciar uma manualmente.

um exemplo de uso de LIMIT com OFFSET:

SELECT

 v.codigo

 ,v.valor

 ,CAST(v.cliente ||' - '|| cli.nome AS varchar(200)) AS cliente

FROM vendas v

JOIN cliente cli ON cli.codigo = v.cliente

LIMIT 20 OFFSET 40

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo