Clipper On Line • Ver Tópico - Somar iguais, mas incluindo o campo a ser somado

Somar iguais, mas incluindo o campo a ser somado

Discussão sobre SQL

Moderador: Moderadores

 

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 18:20

Uma ocorrência diferente:

Somar valores iguais, incluindo o campo a ser somado

SELECT CODIGO, SUM( QTDE ) AS SOMA FROM TABELA GROUP BY CODIGO, QTDE


Se os grupos no GROUP BY precisam constar na lista de campos do resultado, como somar valores iguais?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 18:27

Talvez isto ????

SELECT CODIGO, SUM( QTDE ) * QTD AS SOMA
FROM
(
   SELECT CODIGO, QTDE, COUNT( *) AS QTD
   FROM TABELA
   GROUP BY CODIGO, QTDE
) AS B
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 18:37

Ah sim... e também códigos iguais.

Neste mês a ANP está reclamando porque informamos exatamente igual à nota da Petrobrás, mas.... existe produto repetido na nota.

Então temos:

a) Se tem produto com mesmo código próprio, somar
b) Se tem produto com mesmo código ANP e quantidade igual, somar

exemplo exagerado, mesma nota:

nosso código 10, anp 259, quantidade 10
nosso código 10, anp 259, quantidade 15
nosso código 20, anp 259, quantidade 25
nosso código 30, anp 259, quantidade 10

os dois códigos 10 precisam ser somados, porque é produto repetido
primeiro resultado

nosso código 10, anp 259, quantidade 25
nosso código 20, anp 259, quantidade 25
nosso código 30, anp 259, quantidade 10

pra ANP não interessa nosso código....

anp 259, quantidade 25
anp 259, quantidade 25
anp 259, quantidade 10

Agora não pode ter produto exatamente igual, precisa agrupar QUANTIDADE igual
Esse é o resultado final a ser gerado.

anp 259, quantidade 50
anp 259, quantidade 10

trem chato né?
Agora pensar em como fazer isso em SQL.

Isso é POR NOTA/DOCUMENTO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 18:44

JoséQuintas escreveu:exemplo exagerado, mesma nota:


Nem é exemplo exagerado, porque tem cada situação.
Apenas acho que é difícil acontecer na prática tudo de uma vez, mas pode acontecer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor alxsts » 24 Jun 2021 19:12

Olá!
JoséQuintas escreveu:SELECT CODIGO, SUM( QTDE ) AS SOMA FROM TABELA GROUP BY CODIGO, QTDE

No caso acima, a coluna QTDE não precisa estar no GROUP BY pois ela é argumento de uma função de agregação, Sum().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 21:21

alxsts escreveu:No caso acima, a coluna QTDE não precisa estar no GROUP BY pois ela é argumento de uma função de agregação, Sum().


Mas aí é que está o detalhe: não vai somar quantidades diferentes.
quantidades 10, 20, 30, 40 e 10, só vai somar as duas de 10, não pode somar as outras.
Ao mesmo tempo que a soma de quantidade existe, ela também é uma identificação do que totalizar.

Acho que vão ser as duas etapas:
- a primeira obtendo QTD pra identificar QTDE duplicada e acumular no mesmo código próprio
- a segunda com a mesma coisa, pra identificar QTDE duplicada e acumular no mesmo código ANP
Precisa ser em duas etapas porque a primeira pode gerar novos duplicados.

E no final.... sempre vai dar diferença na ANP, porque não é a mesma ordem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Somar iguais, mas incluindo o campo a ser somado

Mensagempor JoséQuintas » 24 Jun 2021 21:46

Por outro lado.....
Como sempre a ANP acusa diferença, porque não existe uma ordem definida quando isso acontece....
Mais prático somar tudo, e apenas enviar email de confirmação depois, como sempre é feito.

Explicando melhor:

A Petrobrás informa:
produto 259 qtde 10
produto 259 qtde 20
produto 259 qtde 30

Nós informamos:
produto 259 qtde 20
produto 259 qtde 30
produto 259 qtde 10

E a ANP responde isso com 9 (NOVE) erros.

Por outro lado, se mandarmos:
produto 259 qtde 60
A ANP vai responder com apenas 3 (TRES) erros.
E basta mostrar que a soma bate, e fica resolvido.

Neste mês veio um relatório com 6 páginas de erros, quase 120 erros, pra uma nota com uns 20 produtos.
Tá complicado conferir isso.
Estou preocupado de deixar passar alguma coisa nessa lista de erros maluca.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro