Luiz está analisando dados em uma ferramanta de BI que permi...

Próximas questões
Com base no mesmo assunto
Q3878270 Banco de Dados
Luiz está analisando dados em uma ferramanta de BI que permite visualizar e editar o SQL utilizado na consulta ao banco de dados. Uma das análises usa o seguinte SQL:

SELECT v.nome_vara, COUNT(*) AS total_processos FROM FatoProcessos f JOIN DimVara v ON f.id_vara = v.id_vara GROUP BY v.nome_vara;



Para listar o resultado da consulta, começando pelas varas com mais processos, Luiz deve editar o SQL incluindo a cláusula: 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E

Fundamento decisivo: O enunciado pede listar o resultado começando pelas varas com mais processos. Como a consulta já usa GROUP BY v.nome_vara e COUNT(*), a etapa restante é ordenar o resultado agregado; por isso, a cláusula correta é ORDER BY.

Tema central: Ordenação em SQL
Análise das alternativas
A
Errada
TOP está ligado à limitação da quantidade de linhas retornadas. O pedido da questão não é cortar o resultado, mas ordenar as varas para que as de maior total apareçam primeiro.
B
Errada
LIMIT também serve para limitar o número de linhas retornadas, não para ordenar. Mesmo podendo aparecer junto com ordenação em alguns contextos, sozinho não resolve a exigência de começar pelos maiores totais.
C
Errada
INDEX não é cláusula de ordenação de resultados em uma instrução SELECT como a apresentada. Não atua sobre a forma de exibição ordenada das linhas retornadas.
D
Errada
VALUES se relaciona ao fornecimento de valores em inserções ou construções específicas, não à ordenação do resultado de uma consulta SELECT. Portanto, não corresponde à operação pedida.
E
Certa
A alternativa E está certa porque ORDER BY é a cláusula usada para ordenar o conjunto resultante de uma consulta. Como o resultado já traz uma linha por vara com seu total de processos, o procedimento correto para exibir primeiro os maiores totais é ordenar esse resultado pelo campo agregado em ordem decrescente, tipicamente por total_processos DESC.
Pegadinha da questão
A confusão explorada foi entre ordenar o resultado e limitar a quantidade de linhas: expressões como TOP e LIMIT podem sugerir 'mostrar primeiro', mas aqui o comando necessário é de ordenação.
Dica para questões semelhantes
  • Se o enunciado pedir que o resultado apareça do maior para o menor ou do menor para o maior, procure a cláusula ORDER BY.
  • Quando a consulta já tem GROUP BY e função agregada, verifique se a tarefa restante é apenas ordenar o resultado agregado.
  • Não confunda cláusulas de ordenação com cláusulas de limitação de linhas: ordenar define a sequência; limitar define a quantidade.

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

ORDER BY:

Por padrão, o ORDER BY trás os valores do maior para o menor (DESC), logo, se não for especificado na consulta o comando DESC ao final do ORDER BY ele vai trazer o resultado do maior para o menor.

Para garantir que a lista "comece pelas maiores", você obrigatoriamente tem que mandar o motor do banco ordenar a matemática primeiro, do maior para o menor. E o único comando que faz isso no SQL padrão é o ORDER BY.

A (TOP) e B (LIMIT): Eles limitam o volume de dados retornados, mas são "cegos" para a ordem. Para funcionarem como um "Top 10" real, eles são dependentes da existência de um ORDER BY prévio na consulta.

C (INDEX): Cria uma estrutura física (como a Árvore B+) para acelerar a busca na tabela, mas não é uma cláusula usada dentro de um SELECT para ordenar o resultado final na tela.

D (VALUES): É uma cláusula usada exclusivamente no comando INSERT INTO ... VALUES (...) para colocar novos dados na tabela, não tem relação com consulta de BI.

Clique para visualizar este comentário

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