Filtrar informações usando SQL sem usar Select dentro do Where

SQL Server

SQL

04/03/2022

Bom dia a todos!

Estou iniciando meus aprendizados em SQL, estou usando a base de dados de exemplo do SQL Server (Sakila) para fazer alguns teste, queria fazer uma operação com duas tabelas a payment (pagamentos efetuados pelos clientes) e a customer (lista de clientes cadastrados).

Até o momento agrupei os dados pelo cliente e agreguei uma coluna ''''''''Maior Valor'''''''' que traz o maior valor pago entre os clientes.
Select
    pay.customer_id,
    cli.first_name,
    cli.last_name,
    Max(pay.amount) as ''''''''Maior valor''''''''

from customer cli
    JOIN  payment pay ON (cli.customer_id = pay.customer_id)
group by cli.customer_id;


Até aqui rodou tudo bem, estou tentando pensar em uma forma de classificar esses clientes pelo maior valor, por exemplo quem teve uma compra igual ou a cima de 10.99 poderia ter um status de ''''''''VIP'''''''' e quem teve a baixo poderia receber como ''''''''NO VIP'''''''', até o momento consigo trazer cada um por vez, usando:

    Where (Select max(pay.amount) from payment) >= 10.99 -- Filtra os que são maiores


Porém ao usar esse select o código fica umas 50x mais demorado, além de não conseguir colocar todos os dados colocando o status de 'VIP' e 'NO VIP'.

Alguém poderia me dar uma sugestão, por favor?

Desde já agradeço!
Lucas

Lucas

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

04/03/2022

Select
    pay.customer_id,
    cli.first_name,
    cli.last_name,
    Max(pay.amount) as 'Maior valor',
    (case when Max(pay.amount) >= 10.99 then 'VIP' else 'NO VIP' end) status
from
    customer cli
JOIN
    payment pay
    ON pay.customer_id = cli.customer_id
group by
    pay.customer_id,
    cli.first_name,
    cli.last_name

GOSTEI 1

Mais Respostas

Lucas

Lucas

04/03/2022

Boa tarde Emerson, tesei e deu certinho! Muito obrigado pela ajuda!
GOSTEI 0
POSTAR