ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

ajuda em relatório SQL (somas)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Jun 28, 2017 10:42 am    Assunto: ajuda em relatório SQL (somas) Responder com Citação

Opa pessoal, estou com uma dúvida aqui num comando e queria saber se é possível, vou ser bem resumido para ficar de fácil entendimento, seguinte:

Tenho uma tabela onde armazeno os produtos que eu vendo e quero fazer uma sql q separe as quantidades vendidas dos produtos vendidos por dia, até ai tudo bem, só que no final eu quero a quantidade TOTAL de todos os dias, isso é possível?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qua Jun 28, 2017 10:48 am    Assunto: Responder com Citação

Qual banco de dados você está utilizando?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Jun 28, 2017 10:56 am    Assunto: Responder com Citação

leo_cj escreveu:
Qual banco de dados você está utilizando?


Mysql
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 28, 2017 11:51 am    Assunto: Responder com Citação

Bom dia,

Não tenho nenhuma experiência com o MySQL mas experimente acrescentar o operador Rollup mais ou menos conforme o exemplo abaixo:

Código:
select Produto, sum(Quantidade) as Quantidade
from Vendas
group by Produto with rollup


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-comercial_ou_industrial-galpão
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Jun 28, 2017 12:08 pm    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Não tenho nenhuma experiência com o MySQL mas experimente acrescentar o operador Rollup mais ou menos conforme o exemplo abaixo:

Código:
select Produto, sum(Quantidade) as Quantidade
from Vendas
group by Produto with rollup


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-comercial_ou_industrial-galpão


caramba, tão simples para quem é mestre kkkkk

só um detalhe, no final de cada group ele me retorna o total e o nofinal do relatório me retorna o total geral

tenho duas perguntas:

1 - se eu não quiser o total por grupo? é q na verdade eu utilizo o group de dois campos, ai ele cria o total para cada grupo e eu só queria o valor total da sql completa.
2 - se eu quiser "escrever" alguma coisa para identificar q aquela linha é o total, como fazer?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 28, 2017 2:26 pm    Assunto: Responder com Citação

Não sei se existe alguma forma específica para isso no MySQL. Experimente mais ou menos dessa forma:

Código:
select Grupo, Produto, coalesce(Descricao, 'Total') as Descricao, Quantidade
from
(
    select Grupo, Produto, Descricao, sum(Quantidade) as Quantidade
    from Vendas
    group by Grupo, Produto, Descricao with rollup
)
where
    Grupo is not null or
    (Grupo is null and Produto is null);


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Jun 28, 2017 2:47 pm    Assunto: Responder com Citação

imex escreveu:
Não sei se existe alguma forma específica para isso no MySQL. Experimente mais ou menos dessa forma:

Código:
select Grupo, Produto, coalesce(Descricao, 'Total') as Descricao, Quantidade
from
(
    select Grupo, Produto, Descricao, sum(Quantidade) as Quantidade
    from Vendas
    group by Grupo, Produto, Descricao with rollup
)
where
    Grupo is not null or
    (Grupo is null and Produto is null);


Espero que ajude


deu certo sim meu amigo, MUITO obrigado...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qui Jun 29, 2017 7:22 am    Assunto: Responder com Citação

imex escreveu:
Não sei se existe alguma forma específica para isso no MySQL. Experimente mais ou menos dessa forma:

Código:
select Grupo, Produto, coalesce(Descricao, 'Total') as Descricao, Quantidade
from
(
    select Grupo, Produto, Descricao, sum(Quantidade) as Quantidade
    from Vendas
    group by Grupo, Produto, Descricao with rollup
)
where
    Grupo is not null or
    (Grupo is null and Produto is null);


Espero que ajude


Surgiu um outro probleminha quando eu tento usar o ORDER BY pois eu organizo por datas e como essas datas estão no group by, elas ficam em branco e acabam bagunçando toda a consulta. eu vou mostrar abaixo minha consulta original, resumida, sem o ROLLUP e gostaria, se possível, que me ajudasse.

SELECT CODPROD, DATASIMPLES, SUM(QUANT) from (
select CODPROD, CAST(DATAHORA as Date) as DATASIMPLES, QUANT
from DETMOVIMENTO
UNION ALL
select CODPROD,CAST(DATAHORA as Date) as DATASIMPLES, QUANT
from DETMOVIMENTOAM
) consulta1
group by CODPROD, DATASIMPLES
ORDER BY DATASIMPLES
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Jun 29, 2017 11:15 am    Assunto: Responder com Citação

Parece que no MySQL é possível utilizar as palavras chaves Asc e Desc no Group By para indicar a ordem desejada.
Experimente fazer uns testes removendo o Order By e deixando o Group By da seguinte forma:

Código:
group by DATASIMPLES asc, CODPROD asc with rollup;


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Sex Jun 30, 2017 9:28 am    Assunto: Responder com Citação

imex escreveu:
Parece que no MySQL é possível utilizar as palavras chaves Asc e Desc no Group By para indicar a ordem desejada.
Experimente fazer uns testes removendo o Order By e deixando o Group By da seguinte forma:

Código:
group by DATASIMPLES asc, CODPROD asc with rollup;


Espero que ajude


Ajudou sim meu amigo, e MUITO...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Seg Jan 22, 2018 6:10 pm    Assunto: Responder com Citação

imex escreveu:
Parece que no MySQL é possível utilizar as palavras chaves Asc e Desc no Group By para indicar a ordem desejada.
Experimente fazer uns testes removendo o Order By e deixando o Group By da seguinte forma:

Código:
group by DATASIMPLES asc, CODPROD asc with rollup;


Espero que ajude


Meu caro amigo, surgiu outra dúvida sobre esse caso, seguinte:

eu tenho uma tabela bem simples (movimento):

COD, VALOR, DESCONTO

eu queria uma sql q mostrasse todos os dados dessa tabela movimento e no final mostrasse o valor total do campo VALOR e do CAMPO DESCONTO, consegue me ajudar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jan 23, 2018 10:12 am    Assunto: Responder com Citação

Experimente fazer uns testes dessa forma para ver se é obtido o resultado esperado:

Código:
select
    Cod,
    sum(Valor) as Valor,
    sum(Desconto) as Desconto
from Movimento
group by
    Cod,
    Valor,
    Desconto with rollup


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Jan 24, 2018 8:55 am    Assunto: Responder com Citação

imex escreveu:
Experimente fazer uns testes dessa forma para ver se é obtido o resultado esperado:

Código:
select
    Cod,
    sum(Valor) as Valor,
    sum(Desconto) as Desconto
from Movimento
group by
    Cod,
    Valor,
    Desconto with rollup


Espero que ajude


Essa forma até q funciona, só q ele, a cada registro da tabela, ele me retorna 3.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jan 24, 2018 11:06 am    Assunto: Responder com Citação

Experimente remover os campos Valor e Desconto do Group By.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qui Jan 25, 2018 12:15 pm    Assunto: Responder com Citação

imex escreveu:
Experimente remover os campos Valor e Desconto do Group By.

Espero que ajude


Mais uma vez, MUITO obrigado, vc é o cara...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB