Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davi Matos

Soma de dois Selects SUM()

Recommended Posts

Boa tarde amigos, estou num projeto aqui, e estou numa dúvida em relação a como fazer a soma de dois selects SUM(), meio complicado de entender né? Vamos ao código:

SELECT SUM(gols1)
FROM partida 
WHERE sel1=5

UNION

SELECT SUM(gols2) 
FROM partida 
WHERE sel2=5

 

Como vocês podem ver, utilizando UNION, o codigo retorna o select com uma coluna e duas linhas, queria saber como faço para somar o valor retornado por esses dois selects.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solucão

 

 

select sum(g) g
from
(
SELECT SUM(gols1) g
FROM partida 
WHERE sel1=5 
UNION 
SELECT 
SUM(gols2) 
FROM partida 
WHERE sel2=5
) tabela_virtual

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Motta!!

 

Obrigado por me mostrar a solução, foi de grande ajuda!!

 

Mas acabei discubrindo que utilizando a função UNION, não vai servir para o meu propósito.

 

Primeiro deixa eu explicar minha estrutura.

 

Tenho uma tabela de PARTIDA, onde tenho o campo GOLS1 e GOLS2 que marca justamente o placar de cada partida (Ex: 2x1, 1x0, 0x0). Nessa mesma tabela tenho os campos SEL1 e SEL2 que corresponde as seleções que estão disputando a partida. SEL1 esta associado a GOLS1 e SEL2 esta associada a SEL2, deu pra entender?

 

Preciso de duas consultas:

 

1) Uma consulta que me retorne a quantidade de gols feitos de uma seleção.

 

Tentei essa consulta:

 

select sum(g) g
from
(
SELECT SUM(gols1) g
FROM partida 
WHERE sel1=5 
UNION 
SELECT 
SUM(gols2) 
FROM partida 
WHERE sel2=5
) tabela_virtual

2) Uma consulta que me retorne a quantidade de vitórias e empates de uma seleção.

 

Tentei essa consulta:

 

SELECT COUNT(id)
FROM partida
WHERE gols1 > gols2 AND sel1=5

UNION

SELECT COUNT(id)
FROM partida
WHERE gols2 > gols1 AND sel2=5

As duas não estão resolvendo pelo mesmo motivo, a função UNION faz o que a operação de união faz de fato, rs, por exemplo, se em duas partidas, a seleção buscada tiver feito 2 gols, a consulta retorna 2 e não 4 como eu preciso, deu pra entender?

 

Pode me dar uma ajuda para solucionar o caso?



Consegui resolver o problema das consultas utilizando UNION ALL, que retorna todas as linhas sem comparar e sem eliminar duplicatas, ou seja, simplesmente puxa todas as informações do select.

 

Obrigado mesmo assim.

 

Problem solved! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.