castroluis Posted August 24, 2012 at 01:05 PM Report #473376 Posted August 24, 2012 at 01:05 PM Boa tarde... Preciso construir uma instrução SQL que me retorne uma tabela com um somatório de valores para cada vários intervalos de tempo, que serão cada mês do ano. já vi a instrução MONTH(), mas não tive os resultados esperados... obrigado.
apocsantos Posted August 24, 2012 at 01:22 PM Report #473379 Posted August 24, 2012 at 01:22 PM Boa tarde, Explica melhor a tua duvida. Segundo percebi queres fazer uma instrução SQL que devolva o somatório dos valores de todas as linhas de uma coluna, e com uma clausula where em que queres colocar mês e ano ? Select campo1, campo2, campovalor, campodata, mes as Month(campodata), SUM(campovalor) from tabela where campodata between '2012-01-01' and '2012-12-31' group by mes Não testei o exemplo em MySQL mas penso que será algo parecido com isto. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
pikax Posted August 24, 2012 at 01:23 PM Report #473380 Posted August 24, 2012 at 01:23 PM faz um SUM com um GROUP BY mes. SELECT SUM(Valor), Mes FROM tbl GROUP BY Mes Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
castroluis Posted August 24, 2012 at 01:34 PM Author Report #473383 Posted August 24, 2012 at 01:34 PM Boas... é assim eu não tenho o campo mes na tabela. Tenho dataFim e dataInicio. Eu preciso de algo parecido com o primeiro exemplo, mas para cada mês... Por exemplo Janeiro BETWEEN '2012-01-01' AND '2012-01-31' e assim por adiante! Certo, o mes vem do comando MONTH() Vou testar!
castroluis Posted August 24, 2012 at 02:22 PM Author Report #473389 Posted August 24, 2012 at 02:22 PM Eu tenho esta instrução: SELECT sum(presenca) as som,m.sector,MONTH(hora_inicio), hora_inicio ,hora_fim, progresso_mod,nc_associada_mod FROM (tabela_mod m LEFT JOIN tabela_gamas g ON m.ot_mod=g.ot_gamas AND m.sub_ot_mod_1=g.sub_ot_1_gamas AND m.sub_ot_mod_2=g.sub_ot_2_gamas AND m.sub_ot_mod_3=g.sub_ot_3_gamas AND m.sub_ot_mod_4=g.sub_ot_4_gamas AND m.sector=g.sector AND m.operacao_mod=g.operacao) LEFT JOIN ( SELECT codigo_operario, Sum( IFNULL(round(((TIME_TO_Sec(TIMEDIFF(saida_1,entrada_1)))/60)/60,2),0)+IFNULL(round(((TIME_TO_Sec(TIMEDIFF(saida_2,entrada_2)))/60)/60,2),0) +IFNULL(round(((TIME_TO_Sec(TIMEDIFF(saida_3,entrada_3)))/60)/60,2),0)+IFNULL(round(((TIME_TO_Sec(TIMEDIFF(saida_4,entrada_4)))/60)/60,2),0) ) AS presenca FROM tabela_presenca_global WHERE (data_entrada BETWEEN '2012-01-01' AND '2012-12-31') GROUP BY codigo_operario ) p ON m.codigo_operario=p.codigo_operario WHERE m.sector='040' AND (nc_associada='' OR (nc_associada=nc_associada_mod)) AND hora_inicio BETWEEN '2012-01-01' AND '2012-12-31' group by sector, MONTH(hora_inicio) Mas, usando o month os valores da soma dão errados... se fizer apenas para as datas de inicio e fim de janeiro dá-me 200000 e com o monhth obtenho 1000000 por exemplo...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now