Usuário com melhor resposta
Classificação ABC

Pergunta
-
Boa tarde,
Preciso montar uma consulta para classificação ABC, onde com essas informações na tabelaA (ITEM e TOTAL) mostre o valor acumulado (ACUM) exemplo:
ITEM TOTAL ACUM
4462 200 200
4762 150 350
3687 200 550
Considerando que eu preciso primeiro ordenar a coluna TOTAL e depois calcular o acumulado, qual seria a melhor maneira de essa consulta?
Respostas
-
Leandro, como você está utilizando uma versão recente acredito que possa ser utilizada a função Sum com a clausula Over. Ex:
select ITEM, TOTAL, SUM(TOTAL) OVER(ORDER BY TOTAL DESC, ITEM) AS ACUM from TabelaA
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Leandro HG terça-feira, 15 de setembro de 2020 19:35
Todas as Respostas
-
Boa tarde,
Não sei se vou conseguir ajudar, mas qual versão do SQL Server você está utilizando?
Os itens não estão fora da ordem nesse exemplo que você postou?
Assinatura: http://www.imoveisemexposicao.com.br
-
Versão Server 2017 ST
a tabela estaria assim (é um exemplo)
ITEM TOTAL
4462 200
4762 150
3687 200
e deveria mostrar assim (ordenando a coluna total do maior para o menor e somando o acumulado conforma coluna ACUM)
ITEM TOTAL ACUM
4462 200 200
3687 200 400
4762 150 550
-
Leandro,
Veja se estes links podem lhe ajudar:
Mas para dizer qual é o melhor caminho, teremos que entender quem seria o A, B e C....
Inicialmente eu recomendaria realizar os cálculos e depois organizar de acordo com a possível classificação.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Na verdade eu resumi aqui somente o que eu estou com dificuldade que é ordenar do maior para o menor e depois calcular o acumulado, acredito que definir quem vai ser o A, B ou C a princípio é mais tranquilo. Se eu criar uma subconsulta com order by e criar outra subconsulta com order by para somar o acumulado o sistema não aceita order by na subconsulta.
-
Leandro, como você está utilizando uma versão recente acredito que possa ser utilizada a função Sum com a clausula Over. Ex:
select ITEM, TOTAL, SUM(TOTAL) OVER(ORDER BY TOTAL DESC, ITEM) AS ACUM from TabelaA
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Leandro HG terça-feira, 15 de setembro de 2020 19:35
-