TransWikia.com

Consulta que retorna soma onde estados forem iguais a X e os outros agrupados

Stack Overflow em Português Asked by Gustavo Bium Donadon on December 30, 2021

Tenho uma tabela onde contém o valor de venda de alguns estados do Brasil, gostaria de realizar uma consulta que me retornasse o valor de venda dos estados de SP e RJ, e para os outros estados ele me retornasse a soma do que é diferente disso.

Para exemplificar imaginemos que tenho essa tabela

Estado | Vendas

SP | 20

RJ | 30

GO | 50

PA | 30

TO | 5

Gostaria que a consulta me retornasse
SP (20), RJ (30), Outros (85).

Sou bem iniciante em SQL e estou com um pouco de dificuldades

Com esse código consigo trazer todas as vendas separadas porém não consigo agrupar os que são diferentes de SP e RJ

SELECT ESTADO, SUM(VALOR_VENDA) FROM vendas GROUP BY ESTADO ORDER BY ESTADO ASC;

Alguém poderia me dar uma luz?

2 Answers

Ou

SELECT (CASE WHEN ESTADO NOT IN ('RJ','SP') THEN 'OUTROS' ELSE ESTADO END) ESTADO, 
       SUM(VALOR_VENDA)
 FROM vendas 
GROUP BY (CASE WHEN ESTADO NOT IN ('RJ','SP') THEN 'OUTROS' ELSE ESTADO END) 
ORDER BY (CASE WHEN ESTADO NOT IN ('RJ','SP') THEN 'OUTROS' ELSE ESTADO END) ASC

Answered by Motta on December 30, 2021

Uma possibilidade é utilizar CASE / WHEN:

SELECT SUM(CASE WHEN estado = 'SP' THEN Vendas ELSE 0) AS SP,
       SUM(CASE WHEN estado = 'RJ' THEN Vendas ELSE 0) AS RJ,
       SUM(CASE WHEN estado <> 'SP' AND estado <> 'RJ' THEN Vendas ELSE 0) AS OUTROS
FROM sua_tabela;

Uma linha com três colunas com os valores desejados.

Answered by anonimo on December 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP