Jump to content


Photo

Ranking De Clientes Por Ordem De Valor


  • Faça o login para participar
5 replies to this topic

#1 sowrever

sowrever

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:jaraguá do sul / sc
  • Interesses:mulheres

Posted 25/08/2010, 21:04

boa noite galera...

seguinte, consegui fritar mais da metade dos meus neuronios, que ja n eram muitos...

estou com um pepino
estou desenvolvendo um sistema que é o sguinte

tabelas:
clientes (id, nome)

pedidos (id, cliente, valor)
faturamentos (id, pedido, quantidade)

dpedidos (id, cliente)
dfaturamentos (id, pedido, quantidade, valor)


preciso fazer um ranking de clientes
ou seja
exibir em ordem de maior valor os clientes... quem vendeu mais no caso.
SUM((faturamentos.quantidade * pedidos.valor) + (dfaturamentos.quantidade + dfaturamentos.valor))
algo +- assim.
mas n sei fazer query... ja tentei fazer de diversos modos, mas n consigo.

teria que sair assim

cliente QUANTIDADE VALOR
1º NOME QUANTIDADE VALOR

mas n consigo fazer a ordenaçao, com duas querys, consultando cada coisa eu consigo fazer a soma, mas n consigo ordenar.
alguem tem alguma ideia ?
:P
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/08/2010, 21:17

Faça uma view que tenha uma query do tipo:

SELECT P.cliente, P.valor, F.quantidade qtd FROM pedidos P INNER JOIN faturamentos F ON F.pedido=P.id UNION SELECT DP.cliente, DF.quantidade, DF.valor FROM dpedidos DP INNER JOIN dfaturamentos DF ON DP.id=DF.pedido

Depois, pra mostrar o seu ranking, você faz:

SELECT C.nome, SUM(R.qtd) quantidade, SUM(R.qtd*R.valor) valortotal FROM ranking R INNER JOIN clientes C ON R.cliente=C.id GROUP BY C.nome ORDER BY valortotal DESC


#3 sowrever

sowrever

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:jaraguá do sul / sc
  • Interesses:mulheres

Posted 25/08/2010, 22:02

cara ja tentei por inner join e por union.
a que deu menos errado foi por union.


n tenho uma tabela chamada ranking, é no calculo mesmo...
essa sua do join ficou bem diferente da minha, poderias comentar ela ?
:P
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/08/2010, 22:39

Ranking é a view que você vai criar. Leia o link que coloquei.

#5 sowrever

sowrever

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:jaraguá do sul / sc
  • Interesses:mulheres

Posted 26/08/2010, 10:13

eu li... mas n compreendi corretamente...

sem join, a alguma forma de fazer ?
:P
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 26/08/2010, 10:24

Nem sem join, nem sem union. Primeiro você precisa organizar as informações de modo que possa trabalhar com elas. Pra isso o primeiro select. Você vai ter, de uma vez só, o código do cliente, a quantidade e o valor. Depois, em um segundo select, você processa essas informações, somando as coisas. Precisa fazer uma view porque acho que com subquery não funciona. Mas a idéia do que estou sugerindo é:

SELECT c.nome,
SUM(r.qtd) quantidade,
SUM(r.qtd * r.valor) valortotal
FROM (SELECT p.cliente,
p.valor,
f.quantidade qtd
FROM pedidos p
INNER JOIN faturamentos f
ON f.pedido = p.id
UNION
SELECT dp.cliente,
df.quantidade,
df.valor
FROM dpedidos dp
INNER JOIN dfaturamentos df
ON dp.id = df.pedido) r
INNER JOIN clientes c
ON r.cliente = c.id
GROUP BY c.nome
ORDER BY valortotal DESC





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq