Questão FC546286
A tabela VENDAS tem a seguinte estrutura simplificada. VENDAS( ID_VENDA INT, ID_CLIENTE INT, VALOR DECIMAL(10,2), DATA_VENDA DATE ); Dessa tabela, deseja-se obter, para cada client
Linguagem SQL
CEBRASPE (CESPE) · 2025
A tabela VENDAS tem a seguinte estrutura simplificada.
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.
- SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL,
RANK() OVER (ORDER BY SUM(VALOR) DESC) AS
POSICAO
FROM VENDAS
ORDER BY ID_CLIENTE;
- SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL
FROM VENDAS
ORDER BY SUM(VALOR) DESC;
- SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL,
RANK() OVER (ORDER BY SUM(VALOR) DESC) AS
POSICAO
FROM VENDAS
GROUP BY ID_CLIENTE
ORDER BY TOTAL DESC;
- SELECT ID_CLIENTE, RANK() OVER (ORDER BY
SUM(VALOR) DESC) AS POSICAO
FROM VENDAS
ORDER BY POSICAO;
- SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL,
RANK() OVER (ORDER BY TOTAL DESC) AS POSICAO
FROM VENDAS
ORDER BY TOTAL DESC;
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A consulta agrupa as vendas por cliente e calcula o total por cliente usando GROUP BY com \(SUM(VALOR)\), retornando o identificador do cliente e o campo agregado como TOTAL.
Em seguida aplica a função de janela \(RANK()\) OVER (ORDER BY SUM(VALOR) DESC), que produz a posição de cada cliente com base no total decrescente. Valores iguais recebem a mesma posição e ocorrem lacunas nas posições seguintes quando há empates.
Como a agregação por cliente é feita antes da avaliação da função de janela, é possível ordenar a janela por \(SUM(VALOR)\). Por fim, o ORDER BY TOTAL DESC garante que a listagem final venha do maior para o menor total.
Conteúdo do catálogo FC Concursos · Atualizado em