FC ConcursosFC Concursos

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.

  1. SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL,

         RANK() OVER (ORDER BY SUM(VALOR) DESC) AS

    POSICAO

    FROM VENDAS

    ORDER BY ID_CLIENTE;

  2. SELECT ID_CLIENTE, SUM(VALOR) AS TOTAL

    FROM VENDAS

    ORDER BY SUM(VALOR) DESC;

  3. 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;

  4. SELECT ID_CLIENTE, RANK() OVER (ORDER BY

    SUM(VALOR) DESC) AS POSICAO

    FROM VENDAS

    ORDER BY POSICAO;

  5. 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

Continue aprendendo