lgr 0 Denunciar post Postado Novembro 11, 2005 Pessoal,bom dia!N tenho experiencia com pl/sql no Oracle e preciso de uma ajuda de valia enorme.Ficarei muito grato e ficarei a disposição para contribuir com q puder posteriormente.Fico devendo uma.......Preciso calcular a frequencia em q os funcionários passam na catraca aqui na empresa.Ex: SELECT COUNT(id_func) FROM log_catraca WHERE data_entrada = to_date('01/10/2005 10:00:00','dd/mm/yyyy 24HH:mm:ss')O problema surge porque tenho que calcular dos ultimos 30 dias e de todas horas do dia,ou seja fazer um for dos trinta dias e dentro de cada dia outro das 24 horas do dia, e aí penso que tenho q armazenar em cursores.Bom!os resultados eu insiro numa tabela. as colunas das tabelas seriam data, hora00,hora01,......hora22,hora23.Assim guardo a frequencia de cada hora do dia numa tblpor favor deem pelo menos uma luz......ObrigadoLeandro Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 11, 2005 Vamos lá para Calcular nos 30 dias, você pode usar: SQL > SELECT COUNT(id_func) as "Total", data_entrada as "Data Entrada" 2 FROM log_catraca 3 WHERE data_entrada between to_date('01/10/2005','DD-MM-YYYY') and to_date(31/10/2005','DD-MM-YYYY') 4 GROUP BY data_entrada; Agora para todos as horas: SQL > SELECT COUNT(id_func) as "Total", data_entrada as "Data Entrada e Hora" 2 FROM log_catraca 3 WHERE data_entrada between to_date('01/10/2005 00:00:00','DD-MM-YYYY HH24:MI:SS') 4 and to_date(31/10/2005 23:59:59','DD-MM-YYYY HH24:MI:SS') 5 GROUP BY data_entrada; Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
lgr 0 Denunciar post Postado Novembro 11, 2005 RODRIGO,valeu pela resposta mas o problema é um pouco maior q issoeu criei uma procedure ela está com o status válido..estou postando ela e acho q vai ser de boa valia p o forum.Se você puder ajudar..achoq falta pouco p funcionar.segue:CREATE OR REPLACEProcedure PAULISTA."FREQ_CALCULADA" (subtrai NUMBER)ISTYPE Teste IS VARRAY(23) OF NUMBER(4) ;vals Teste ;sequenceInt NUMBER;horaI VARCHAR(15);horaF VARCHAR(15); Beginvals(0) := 0;vals(1) := 0;vals(2) := 0;vals(3) := 0;vals(4) := 0;vals(5) := 0;vals(6) := 0;vals(7) := 0;vals(8) := 0;vals(9) := 0;vals(10) := 0;vals(11) := 0;vals(12) := 0;vals(13) := 0;vals(14) := 0;vals(15) := 0;vals(16) := 0;vals(17) := 0;vals(18) := 0;vals(19) := 0;vals(20) := 0;vals(21) := 0;vals(22) := 0;vals(23) := 0;for i in reverse 1..subtrailoop for j in 0..23 loop horaI := (j) || ':00:00'; horaF := (j+1) || ':00:00'; dbms_output.put_line(j); dbms_output.put_line(horaI); SELECT COUNT(*) into vals(i) FROM log_catraca WHERE data_entrada BETWEEN to_date(trunc(SYSDATE-i)||horaI,'dd/mm/yyyy HH24:MI:SS') AND to_date(trunc(SYSDATE-i)||horaF,'dd/mm/yyyy HH24:MI:SS'); end loop;SELECT FREQ.NEXTVAL INTO sequenceInt FROM DUAL;INSERT INTO FREQUENCIA_CALCULADA (id_frequencia,data,h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17, h18,h19,h20,h21,h22,h23) VALUES (sequenceInt,SYSDATE-i,vals(0),vals(1),vals(2),vals(31),vals(41),vals(51),vals(61),vals(71),vals(81),vals(91),vals(10),vals(11),vals(12), vals(13),vals(14),vals(15),vals(16),vals(17),vals(18),vals(19),vals(20),vals(21),vals(22),vals(23));end loop;end; Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 17, 2005 Qual foi o tipo de erro que o Oracle lhe mandou... Assim ajuda a analisar melhor a procedure! Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites