Gabarito disponível
VENDAS(
ID_VENDA INT,
ID_CLIENTE INT,
VALOR DECIMAL(10,2),
DATA_VENDA DATE
);
Dessa tabela, deseja-se obter, para cada cliente, o total de vendas realizadas e, em seguida, apresentar o ranking desses clientes, ordenado do maior para o menor valor total.
A partir das informações precedentes, assinale a opção na qual é apresentada a consulta SQL que atenderá ao desejado.
Resolução comentada
Requer GROUP BY e RANK() sobre SUM, ordenando por total.
Para totalizar por cliente é preciso GROUP BY ID_CLIENTE; a função de janela RANK() OVER (ORDER BY SUM(VALOR) DESC) é aplicada após o agrupamento, e o ORDER BY TOTAL DESC ordena do maior ao menor.
Análise das alternativas
A) Sem GROUP BY, e ordena por cliente. B) Sem GROUP BY, e sem ranking. D) Sem GROUP BY e sem o total. E) Sem GROUP BY e usa o alias TOTAL dentro da janela, o que não é permitido (alias não visível no mesmo SELECT).
Referência: SQL: funções de janela e agregação.
Resolução comentada do VaiConcursos.