totalização de um campo em todas as linhas

Oracle

30/03/2012

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

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

30/03/2012

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

Boa sorte.
GOSTEI 0
Romulo Junior

Romulo Junior

30/03/2012

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

Joel Rodrigues

30/03/2012

Em ambos, pois os filtros serão os mesmos.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

30/03/2012

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.
GOSTEI 0
Rafael Henchen

Rafael Henchen

30/03/2012

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
GOSTEI 0
POSTAR