Somar e subtrair dentro do mySql

24/04/2021

19

Realiso duas somas de valor agrupado, (SUM(desconto) AS desco) e (SUM(valorl) AS valor) apos as 2 somas, sendo uma que somas os desconto e a outra o valor do produto, depois tento subtrair o valor (valor)- (desco) AS divalor, porem retorna o erro #1054 - Coluna 'valor' desconhecida em 'field list'

[code=sql][/SELECT id_lancamento, id_funci, id_funcionario, valorl, desconto,
SUM(valorl) AS valor,
SUM(desconto) AS desco,
(valor)- (desco) AS divalor
FROM lancamento_rj, funcionario_rj
WHERE id_funci = id_funcionario
GROUP BY id_funci]
Robson Carmo

Robson Carmo

Responder

Posts

24/04/2021

Emerson Nascimento

as colunas valor e desco não existem; são virtuais.
repita o comando para ter o resultado esperado.

uma dica: utilize aliases para as tabelas e faça relacionamentos explícitos. da forma como você fez a leitura é difícil pra quem quer te ajudar.
SELECT
   LR.id_funci,
   SUM(LR.valorl) valor,
   SUM(LR.desconto) desco,
   SUM(LR.valorl) - SUM(LR.desconto) divalor
FROM
   lancamento_rj LR
INNER JOIN
   funcionario_rj FR ON
   FR.id_funcionario = LR.id_funci
GROUP BY
   LR.id_funci
não há lógica em apresentar (select) as colunas (valorl, desconto) que estão sendo agrupadas (sum).
outra coisa: aparentemente nenhum campo da tabela FR está sendo utilizado. porque a tabela está sendo referenciada?

se você quiser apresentar algum dado do funcionário, as colunas precisarão constar no group by.
SELECT
   LR.id_funci,
   FR.nome,
   SUM(LR.valorl) valor,
   SUM(LR.desconto) desco,
   SUM(LR.valorl) - SUM(LR.desconto) divalor
FROM
   lancamento_rj LR
INNER JOIN
   funcionario_rj FR ON
   FR.id_funcionario = LR.id_funci
GROUP BY
   LR.id_funci,
   FR.nome


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar