rcstere Postado Maio 31, 2012 Denunciar Share Postado Maio 31, 2012 Olá, Tenho a seguinte situação: preciso selecionar os 5 principais clientes em termos de faturamento, por ano, um uma tabela de vendas. Já li algumas sugestões de solução para isso, mas não consegui implementar. Alguém poderia, por favor, me ajudar?Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 31, 2012 Denunciar Share Postado Maio 31, 2012 Poste o que você já tentou. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rcstere Postado Maio 31, 2012 Autor Denunciar Share Postado Maio 31, 2012 Poste o que você já tentou.Parei nesse código. Vi que não adiantar usar LIMITSELECT ano, cliente, faturamentoFROM(SELECT c.cliente cliente, t.ano ano, SUM(f.valor_vendido) faturamentoFROM f_vendas fJOIN cliente c ON (f.id_cliente=c.id)JOIN dim_tempo t ON (f.id_tempo=t.id)GROUP BY t.ano,c.clienteORDER BY t.ano,SUM(f.valor_vendido) DESC,c.cliente ) t1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 31, 2012 Denunciar Share Postado Maio 31, 2012 Não tenho os dados para testar mas tenta isso:select ano, cliente, faturamento from ( SELECT c.cliente, t.ano, SUM(f.valor_vendido) as faturamento, rank() over (partition by t.ano order by SUM(f.valor_vendido) desc) as r FROM f_vendas f JOIN cliente c ON f.id_cliente=c.id JOIN dim_tempo t ON f.id_tempo=t.id GROUP BY t.ano,c.cliente ) s where r <= 5 ORDER BY t.ano, r, c.clienteSe não der certo poste a mensagem de erro. Aliás essa tabela dim_tempo está meio esquisita. Foi você quem modelou? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rcstere Postado Maio 31, 2012 Autor Denunciar Share Postado Maio 31, 2012 Funcionou perfeitamente! Muito obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 31, 2012 Denunciar Share Postado Maio 31, 2012 Na realidade talvez esteja errado. Confira o resultado e se estiver errado substitua "rank() over" por "row_number() over" Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rcstere
Olá,
Tenho a seguinte situação: preciso selecionar os 5 principais clientes em termos de faturamento, por ano, um uma tabela de vendas. Já li algumas sugestões de solução para isso, mas não consegui implementar. Alguém poderia, por favor, me ajudar?
Obrigado.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.