Fórum Calcular somatorio por período, mês e ano na mesma query #534412
14/10/2015
0
Prezados.
Sei o que vou perguntar e trivial, mas estou com grandes dificuldades de desenvolver.
Preciso de uma (sera que pode ser feito em apenas uma?) query (FIREBIRD x Deplhi) para calcular o seguinte:
Tabela
CodAluno DataMedicao TotalPercorrido
01 05 08 2014 100
01 01 09 2015 600
02 03 09 2015 850
02 01 10 2015 700
03 03 08 2015 100
02 01 09 2015 250
01 03 10 2015 220
Eu preciso de um resultado em que ele me devolva o total percorrido em um período dado (data inicial e data final) por aluno
por mês (independente do período - set, out, nov) por aluno
total no ano = distancia total percorrida por aluno
Ex: período de 01 09 2015 a 31 10 22015
aluno 01
período 820
mês 09 600
ano 2014 100 2015 820
E assim por diante....
Bem desafiante né?
Obrigado a todos.
Sei o que vou perguntar e trivial, mas estou com grandes dificuldades de desenvolver.
Preciso de uma (sera que pode ser feito em apenas uma?) query (FIREBIRD x Deplhi) para calcular o seguinte:
Tabela
CodAluno DataMedicao TotalPercorrido
01 05 08 2014 100
01 01 09 2015 600
02 03 09 2015 850
02 01 10 2015 700
03 03 08 2015 100
02 01 09 2015 250
01 03 10 2015 220
Eu preciso de um resultado em que ele me devolva o total percorrido em um período dado (data inicial e data final) por aluno
por mês (independente do período - set, out, nov) por aluno
total no ano = distancia total percorrida por aluno
Ex: período de 01 09 2015 a 31 10 22015
aluno 01
período 820
mês 09 600
ano 2014 100 2015 820
E assim por diante....
Bem desafiante né?
Obrigado a todos.
Cezar Moniz
Curtir tópico
+ 0
Responder
Posts
14/10/2015
Fabio Basso
A consulta abaixo vai fazer a soma agrupado pelo codigo do aluno e depois pelo mês. Você pode usar o extract(year from datamedicao) para agrupar por ano. Porém para fazer o agrupamento por mês e por ano no mesmo select, só se usar um UNION como no exemplo abaixo. Talvez uma STORED PROCEDURE resolveria o problema por completo.
select codaluno, extract(month from datamedicao) as mes_ano, sum(totalpercorrido)
from alunototalpercorrido
group by 1, 2
union
select codaluno, extract(year from datamedicao) as mes_ano, sum(totalpercorrido)
from alunototalpercorrido
group by 1, 2
select codaluno, extract(month from datamedicao) as mes_ano, sum(totalpercorrido)
from alunototalpercorrido
group by 1, 2
union
select codaluno, extract(year from datamedicao) as mes_ano, sum(totalpercorrido)
from alunototalpercorrido
group by 1, 2
Responder
Gostei + 0
14/10/2015
Cezar Moniz
Prezado Fabio.
Sua resposta deu uma clareada legal! Muito obrigado.
Qualquer coisa volto a te pedir socorro!
Abracao
Sua resposta deu uma clareada legal! Muito obrigado.
Qualquer coisa volto a te pedir socorro!
Abracao
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)