Ir para conteúdo

POWERED BY:

Arquivado

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

rzenga

Query para Ranking

Recommended Posts

Amigo(a)s,

 

Possuo uma tabela de um sistema de transações financeiras o qual demonstra informações sobre depositos de meus clientes. Nessa tabela existe o valor do deposito e o código do banco destinatario. Em primeiro lugar, agrupando por "Cliente" e "Banco Destinatario" e somando o campo "Valor", vou ter uma view do total do valor depositado por cliente para cada um de seus bancos. Nesta view a unica linha que me interessa é a que possui o maior valor... independente do banco que o cliente fez o deposito. Isso para saber qual eh o banco preferido para deposito de meus clientes.

 

Alguma sugestão de sintaxe SQL para essa query?

 

Good Vibrations !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

jah tentou view de view?!

 

View nada mais eh doque a vizualizaca de uma tabela, correto?! como você ker a unica linha que me interessa é a que possui o maior valor

pa nao usa um top 1, agrupando os campos?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

jah tentou view de view?!

 

View nada mais eh doque a vizualizaca de uma tabela, correto?! como você ker a unica linha que me interessa é a que possui o maior valor

pa nao usa um top 1, agrupando os campos?

 

Abçs

 

Olá jus2ka !

Primeiramente, obrigado por sua atenção.

 

Com relaçao a minha duvida, se eu utilizar o TOP 1 vou ter apenas uma linha sendo exibida... o q eu preciso e a linha de maior valor para cada cliente que tenho na minha tabela. ou seja... para cada cliente teria que ter um top1 com order by desc no campo "valor"

 

Nao sei se fui claro.

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

tem como você postar a estrutura de como esta esta view e o resultado que espera?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

tem como você postar a estrutura de como esta esta view e o resultado que espera?

 

Abçs

Ok, Vamos lá.

Minha tabela pura esta abaixo:

 

CLIE_NOME BCO_ID VALOR

CLIENTE1 409 R$ 80.000.000,00

CLIENTE1 409 R$ 69.096.231,00

CLIENTE1 409 R$ 80.000.000,00

CLIENTE1 409 R$ 69.096.231,00

CLIENTE1 409 R$ 80.000.000,00

CLIENTE1 409 R$ 69.096.231,00

CLIENTE1 422 R$ 435.000.000,00

CLIENTE1 422 R$ 435.000.000,00

CLIENTE1 422 R$ 435.000.000,00

CLIENTE2 409 R$ 180.000.000,00

CLIENTE2 409 R$ 180.000.000,00

CLIENTE2 409 R$ 103.000.000,00

CLIENTE2 409 R$ 90.533.333,00

CLIENTE2 409 R$ 78.179.691,52

CLIENTE2 409 R$ 68.428.000,00

CLIENTE2 409 R$ 180.000.000,00

CLIENTE2 409 R$ 103.000.000,00

CLIENTE2 409 R$ 90.533.333,00

CLIENTE2 409 R$ 78.179.691,52

CLIENTE2 409 R$ 68.428.000,00

CLIENTE2 422 R$ 103.000.000,00

CLIENTE2 422 R$ 90.533.333,00

CLIENTE2 422 R$ 78.179.691,52

CLIENTE2 422 R$ 68.428.000,00

CLIENTE3 341 R$ 10.221.112,00

CLIENTE3 341 R$ 21.225.555,00

CLIENTE3 409 R$ 95.533.333,00

CLIENTE4 409 R$ 9.879.889.777,00

CLIENTE4 422 R$ 71.494.393,49

CLIENTE4 422 R$ 71.494.393,49

 

Fiz um "Group" normal e minha view esta conforme abaixo:

 

CLIE_NOME BCO_ID QTDE VALOR_TOTAL

CLIENTE1 409 7 R$ 447.288.693,00

CLIENTE1 422 3 R$ 1.305.000.000,00

CLIENTE2 409 11 R$ 1.220.282.049,04

CLIENTE2 422 4 R$ 340.141.024,52

CLIENTE3 341 2 R$ 31.446.667,00

CLIENTE4 409 2 R$ 9.975.423.110,00

CLIENTE4 422 2 R$ 142.988.786,98

 

 

O que preciso eh apenas das linhas dessa view que possuem o maior valor (por cliente) ex:

 

CLIE_NOME BCO_ID QTDE VALOR_TOTAL

CLIENTE1 409 7 R$ 447.288.693,00

CLIENTE1 422 3 R$ 1.305.000.000,00 <--------- Banco Preferido do cliente1

CLIENTE2 409 11 R$ 1.220.282.049,04 <--------- Banco Preferido do cliente2

CLIENTE2 422 4 R$ 340.141.024,52

CLIENTE3 341 2 R$ 31.446.667,00 <--------- Banco Preferido do cliente3

CLIENTE4 409 2 R$ 9.975.423.110,00 <--------- Banco Preferido do cliente4

CLIENTE4 422 2 R$ 142.988.786,98

 

 

O resultado pretendido seria :

CLIENTE1 422 3 R$ 1.305.000.000,00 <--------- Banco Preferido do cliente1

CLIENTE2 409 11 R$ 1.220.282.049,04 <--------- Banco Preferido do cliente2

CLIENTE3 341 2 R$ 31.446.667,00 <--------- Banco Preferido do cliente3

CLIENTE4 409 2 R$ 9.975.423.110,00 <--------- Banco Preferido do cliente4

 

 

Dessa forma eu posso saber, por cliente, qual eh o banco preferido e o valor total de depositos realizado para aquele banco.

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

fiz algo meio rapido aki no QA, ve se entende ai http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

 

-- CRIEI A TABELA PARA INSERIR OS VALORES
create table #temp (CLIE_NOME varchar(100), BCO_ID int, moeda varchar(5), QTDE_VALOR_TOTAL bigint)

insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',10300000000)
insert into #temp values ('CLIENTE2',409,'R$',9053333300)
insert into #temp values ('CLIENTE2',409,'R$',7817969152)
insert into #temp values ('CLIENTE2',409,'R$',6842800000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',10300000000)
insert into #temp values ('CLIENTE2',409,'R$',9053333300)
insert into #temp values ('CLIENTE2',409,'R$',7817969152)
insert into #temp values ('CLIENTE2',409,'R$',6842800000)
insert into #temp values ('CLIENTE2',422,'R$',10300000000)
insert into #temp values ('CLIENTE2',422,'R$',9053333300)
insert into #temp values ('CLIENTE2',422,'R$',7817969152)
insert into #temp values ('CLIENTE2',422,'R$',6842800000)
insert into #temp values ('CLIENTE3',341,'R$',1022111200)
insert into #temp values ('CLIENTE3',341,'R$',2122555500)
insert into #temp values ('CLIENTE3',409,'R$',9553333300)
insert into #temp values ('CLIENTE4',409,'R$',987988977700)
insert into #temp values ('CLIENTE4',422,'R$',7149439349)
insert into #temp values ('CLIENTE4',422,'R$',7149439349)

-- INSIRO EM UMA TEMPORARIA A SOMA DOS VALORES
select CLIE_NOME,BCO_ID,moeda, sum(QTDE_VALOR_TOTAL) as valor_total
into #tempA
from #temp
group by CLIE_NOME,BCO_ID,moeda
order by CLIE_NOME, valor_total desc


-- PEGO SOMENTE O CLIENTE E O MAXIMO VALOR DELE E INSIRO EM OUTRA TEMPORARIA
select CLIE_NOME ,max(valor_total) as valor_total 
into #tempB
from #tempA 
group by CLIE_NOME 

select * from #tempA
	inner join #tempB on #tempA.CLIE_NOME = #tempB.CLIE_NOME 
					and #tempA.valor_total = #tempB.valor_total

drop table #temp
drop table #tempA
drop table #tempB

Ve se isso te ajuda ;)

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

rzenga,

 

fiz algo meio rapido aki no QA, ve se entende ai http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

 

-- CRIEI A TABELA PARA INSERIR OS VALORES
create table #temp (CLIE_NOME varchar(100), BCO_ID int, moeda varchar(5), QTDE_VALOR_TOTAL bigint)

insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',409,'R$',8000000000)
insert into #temp values ('CLIENTE1',409,'R$',6909623100)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE1',422,'R$',43500000000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',10300000000)
insert into #temp values ('CLIENTE2',409,'R$',9053333300)
insert into #temp values ('CLIENTE2',409,'R$',7817969152)
insert into #temp values ('CLIENTE2',409,'R$',6842800000)
insert into #temp values ('CLIENTE2',409,'R$',18000000000)
insert into #temp values ('CLIENTE2',409,'R$',10300000000)
insert into #temp values ('CLIENTE2',409,'R$',9053333300)
insert into #temp values ('CLIENTE2',409,'R$',7817969152)
insert into #temp values ('CLIENTE2',409,'R$',6842800000)
insert into #temp values ('CLIENTE2',422,'R$',10300000000)
insert into #temp values ('CLIENTE2',422,'R$',9053333300)
insert into #temp values ('CLIENTE2',422,'R$',7817969152)
insert into #temp values ('CLIENTE2',422,'R$',6842800000)
insert into #temp values ('CLIENTE3',341,'R$',1022111200)
insert into #temp values ('CLIENTE3',341,'R$',2122555500)
insert into #temp values ('CLIENTE3',409,'R$',9553333300)
insert into #temp values ('CLIENTE4',409,'R$',987988977700)
insert into #temp values ('CLIENTE4',422,'R$',7149439349)
insert into #temp values ('CLIENTE4',422,'R$',7149439349)

-- INSIRO EM UMA TEMPORARIA A SOMA DOS VALORES
select CLIE_NOME,BCO_ID,moeda, sum(QTDE_VALOR_TOTAL) as valor_total
into #tempA
from #temp
group by CLIE_NOME,BCO_ID,moeda
order by CLIE_NOME, valor_total desc


-- PEGO SOMENTE O CLIENTE E O MAXIMO VALOR DELE E INSIRO EM OUTRA TEMPORARIA
select CLIE_NOME ,max(valor_total) as valor_total 
into #tempB
from #tempA 
group by CLIE_NOME 

select * from #tempA
	inner join #tempB on #tempA.CLIE_NOME = #tempB.CLIE_NOME 
					and #tempA.valor_total = #tempB.valor_total

drop table #temp
drop table #tempA
drop table #tempB

Ve se isso te ajuda ;)

 

Abçs

 

Caro jus2ka,

 

Obrigado por sua ajuda, agora vou utilizar esse conceito para solucionar meu problma.

 

Abraços

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.