|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
grsoft Aprendiz
Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Fev 28, 2018 3:12 pm Assunto: Dúvida SQL (MYSQL) com totais e porcentagem |
|
|
Pessoal. boa tarde, estou com uma dúvida aqui e gostaria da ajuda de vcs.
Tenho um banco de dados de pagamentos e queria fazer uma sql mostrando o total de cada tipo de pagamento junto com a porcentagem sobre o total, ex:
tabela tipopagamento
COD, NOME
tabela pagamentos
COD, CODPAG, VALOR
na sql final gostaria que mostrasse da seguinte forma (exemplo):
tive as seguintes vendas
DINHEIRO - 500,00
DINHEIRO - 200,00
DINHEIRO - 100,00
CARTAO CREDITO - 800,00
CARTAO CREDITO - 600,00
CARTAO DEBITO - 600,00
CARTAO DEBITO - 400,00
CARTAO DEBITO - 100,00
o resultado seria esse:
DINHEIRO - 800,00 - 24,24%
CARTAO CREDITO - 1.400,00 - 42,42%
CARTAO DEBITO - 1.100,00 - 33,33%
Uso MySQL versão 5.7 |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Qua Fev 28, 2018 4:07 pm Assunto: |
|
|
este exemplo pode ficar lento, mas resolve por enqto:
Código: | SELECT d.id_documentos,
d.descricao,
SUM(r.valor) AS total,
ROUND(SUM(r.valor) / (SELECT SUM(valor) FROM receber) * 100, 1) AS percentual
FROM documentos d
LEFT JOIN receber r ON r.id_documentos = d.id_documentos
GROUP BY d.id_documentos, d.descricao |
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Fev 28, 2018 4:09 pm Assunto: |
|
|
Boa tarde,
Não tenho nenhuma experiência com o MySQL mas experimente fazer uns testes mais ou menos dessa forma:
Código: | select
t.Nome,
sum(p.Valor) as Valor,
sum(p.Valor) / c.Total * 100 as Percentual
from TipoPagamento as t
inner join Pagamentos as p
on p.CodPag = t.Cod
cross join
(
select
sum(Valor) as Total
from Pagamentos
) as c
group by
t.Nome |
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!cumbica-comercial_ou_industrial-galpão |
|
Voltar ao Topo |
|
|
grsoft Aprendiz
Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Fev 28, 2018 6:23 pm Assunto: |
|
|
Mais uma vez me salvando, vc é o cara....
imex escreveu: | Boa tarde,
Não tenho nenhuma experiência com o MySQL mas experimente fazer uns testes mais ou menos dessa forma:
Código: | select
t.Nome,
sum(p.Valor) as Valor,
sum(p.Valor) / c.Total * 100 as Percentual
from TipoPagamento as t
inner join Pagamentos as p
on p.CodPag = t.Cod
cross join
(
select
sum(Valor) as Total
from Pagamentos
) as c
group by
t.Nome |
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!cumbica-comercial_ou_industrial-galpão |
|
|
Voltar ao Topo |
|
|
grsoft Aprendiz
Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Fev 28, 2018 6:28 pm Assunto: |
|
|
muito obrigado meu amigo....
joemil escreveu: | este exemplo pode ficar lento, mas resolve por enqto:
Código: | SELECT d.id_documentos,
d.descricao,
SUM(r.valor) AS total,
ROUND(SUM(r.valor) / (SELECT SUM(valor) FROM receber) * 100, 1) AS percentual
FROM documentos d
LEFT JOIN receber r ON r.id_documentos = d.id_documentos
GROUP BY d.id_documentos, d.descricao |
|
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|