Fórum totalização de um campo em todas as linhas #414866

30/03/2012

0

tenho uma tabela o seguinte

nome insc vlr
antonio 1 10
paulo 2 50
claudio 3 40

queria fazer uma pesquisa tipo assim
SELECT NOME, INSC, VLR, SUM(VLR) FROM CADASTRO

So que eu queria q o resultado saisse asii

nome insc vlr sum(vlr)
antonio 1 10 100
paulo 2 50 100
claudio 3 40 100

ao inves de sair assim

nome insc vlr sum(vlr)
antonio 1 10 10
paulo 2 50 60
claudio 3 40 100

alguem pode me ajudar em como fazer esse select?
Romulo Junior

Romulo Junior

Responder

Posts

30/03/2012

Joel Rodrigues

Você precisará fazer um select dentro do outro:
SELECT NOME, INSC, VLR, (SELECT SUM(VLR) FROM CADASTRO) FROM CADASTRO

Boa sorte.
Responder

Gostei + 0

02/04/2012

Romulo Junior

entendi, so que e se tiver algumas clausulas where eu coloco elas no do select principal ou no da totalização
Responder

Gostei + 0

02/04/2012

Joel Rodrigues

Em ambos, pois os filtros serão os mesmos.
Responder

Gostei + 0

02/04/2012

Joel Rodrigues

Exemplo:

SELECT NOME, INSC, VLR, (SELECT SUM(VLR) FROM CADASTRO WHERE NOME LIKE %JOSE%)
FROM CADASTRO
WHERE NOME LIKE %JOSE%


No caso, eu filtro os registros onde a coluna NOME contém o texto JOSE.

Boa sorte.
Responder

Gostei + 0

09/04/2012

Rafael Henchen

tenho uma tabela o seguinte
(...)
queria fazer uma pesquisa tipo assim
SELECT NOME, INSC, VLR, SUM(VLR) FROM CADASTRO


Ola Romulo,

É só usar a clausula OVER da função de agregação, assim você evita 2 scans na tabela/indice a cada execução

SELECT NOME, INSC, VLR, SUM(VLR) OVER (GROUP BY NULL) AS SOMA_TOTAL FROM CADASTRO WHERE NOME = :VAR_NOME

Att,
Rafael
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar