Victor Hugo Não usei tabela auxiliar e fiz desta maneira. TABELA sessao id_sessao serial, data_sessao_ini, data_sesssao_fim, id_usuario
e o select assim: SELECT (SELECT SUM(data_sessao_fim - data_sessao_ini) FROM sessao WHERE id_usuario = valor do parametro) AS tempo_total FROM sessao WHERE id_usuario = valor do parametro GROUP BY 1; Se é a melhor forma não sei, mas faz o que eu preciso e desta forma ele somou correto. O campo acao não foi mais preciso usar, pois ja tenho data de entrada e saída então não preciso de mais uma coluna pra dizer se foi inicio ou fim. Pergunta: tem como eliminar aqueles milisegundos que aparecem na data? Depois do segundo vem um ponto e mais 6 numeros. Valeu Em 3 de setembro de 2010 12:00, <pgbr-geral-requ...@listas.postgresql.org.br > escreveu: > Send pgbr-geral mailing list submissions to > pgbr-geral@listas.postgresql.org.br > > To subscribe or unsubscribe via the World Wide Web, visit > > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > or, via email, send a message with subject or body 'help' to > pgbr-geral-requ...@listas.postgresql.org.br > > You can reach the person managing the list at > pgbr-geral-ow...@listas.postgresql.org.br > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of pgbr-geral digest..." > > > Tópicos de Hoje: > > 1. Re: Re Re: Re Re: Somar horas tendo somente uma coluna > (Victor Hugo) > 2. José Luis Ramos Jr wants to stay in touch on LinkedIn > (José Luis Ramos Jr) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Fri, 3 Sep 2010 10:48:35 -0300 > From: Victor Hugo <vh.cleme...@gmail.com> > Subject: Re: [pgbr-geral] Re Re: Re Re: Somar horas tendo somente uma > coluna > To: Comunidade PostgreSQL Brasileira > <pgbr-geral@listas.postgresql.org.br> > Message-ID: > <aanlktimad8pqjoiajk0tw2n1skzufb8n9dmnkdm0v...@mail.gmail.com> > Content-Type: text/plain; charset=ISO-8859-1 > > Beto, > > Sobre esse campo acao que vc mencionou sobre a tal tabela, acho que > não seria "elegante" da forma que descreveu tendo inicio e fim, seria > melhor criar uma tabela com esses 2 valores (INICIO e FIM). > > TABELA acao > id_acao serial, > descr_acao varchar2(20) > > TABELA sessao > id_sessao serial, > data_sessao_ini, > data_sesssao_fim, > id_usuario, > id_acao integer > > Aí é contigo... > > []´s > vh > > > > > Em 2 de setembro de 2010 20:26, Beto Lima <betol...@gmail.com> escreveu: > > Fabrízio > > "Mas o que vc quer não é o intervalo linha a linha??? Pq se for linha a > > linha > > da tua tabela vc nao considerou o intervalo entre 10:11:00 e 10:15:00 que > é > > de 4 minutos... > > Na verdade acho que expliquei mal, você ta certo deveria considerar sim. > A > > idéia é somar os minutos independente de quantas linhas tiver. > > Pelo pouco que entendi desse modelo vc tem uma linha para inicio e outra > > para fim... é isso??? Vc não tem algum campo que indica isso??? Um tipo > ou > > um auto-relacionamento??? Pq caso nao tenha e necessite fazer isso > > "sequencialmente" creio que seja mais indicado escrever uma pequena PL > para > > resolver." > > Eu tenho ainda mais uma coluna que criei (acao, varchar) onde ficam dois > > valores: INICIO ou FIM > > A idéia é: quando o cara inicia uma prova, insere nesta tabela a data e > hora > > do inicio. Ele tem a opção de pausar a prova e voltar quando quiser, > amanhã > > ou depois entendem. > > Quando ele da a pausa, no caso o FIM, daí salva de novo mais uma linha > com a > > data e hora de saída. > > E assim por diante, entrada e saída. > > Com pl eu não sei como se faria isso, eu apenas queria somar os minutos > que > > o cara levou pra completar a prova. > > > > -------------------------------------------- > > Osvaldo mais uma vez desculpa por esquecer do assunto, esqueci mesmo de > > alterar. foi mal. > > Como você determina que 10:11:00 é um término, e não um início de > intervalo? > > Apenas pela posição relativa? > > Eu tenho uma coluna (acao, varchar) onde ficam dois valores: INICIO ou > FIM. > > é ali que sei quando o usuario entrou ou saiu. > > com o uso de Window eu ainda não sei sobre isso, vou dar uma pesquisada. > > -------------------------------------------- > > Victor > > "Remodele a sua tabela" > > Eu até pensei em usar como você disse, só que a idéia seria não usar > update > > na tabela e sim somente inserts. No próprio titulo da mensagem diz: > "Somar > > horas tendo somente uma coluna". > > Mas em último caso posso mudar a idéia e quem sabe funcione né!!! > > Pra mim não teria problema em fazer como você disse, só que eu teria que > > fazer verificações na aplicação. (fazer um select pra verificar se o > > registro já existe e então atualizar a coluna com data de saída). É uma > > idéia também... > > > > > > > > > > > > > > Em 2 de setembro de 2010 12:00, > > <pgbr-geral-requ...@listas.postgresql.org.br> escreveu: > >> > >> Send pgbr-geral mailing list submissions to > >> pgbr-geral@listas.postgresql.org.br > >> > >> To subscribe or unsubscribe via the World Wide Web, visit > >> > >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >> or, via email, send a message with subject or body 'help' to > >> pgbr-geral-requ...@listas.postgresql.org.br > >> > >> You can reach the person managing the list at > >> pgbr-geral-ow...@listas.postgresql.org.br > >> > >> When replying, please edit your Subject line so it is more specific > >> than "Re: Contents of pgbr-geral digest..." > >> > >> > >> Tópicos de Hoje: > >> > >> 1. Re: Re Re: Somar horas tendo somente uma coluna > >> (Fabrízio de Royes Mello) > >> 2. Re: Digest pgbr-geral, volume 21, assunto 4 (Osvaldo Kussama) > >> 3. Re: Re Re: Somar horas tendo somente uma coluna (Victor Hugo) > >> > >> > >> ---------------------------------------------------------------------- > >> > >> Message: 1 > >> Date: Thu, 2 Sep 2010 10:37:42 -0300 > >> From: Fabrízio de Royes Mello <fabriziome...@gmail.com> > >> Subject: Re: [pgbr-geral] Re Re: Somar horas tendo somente uma coluna > >> To: Comunidade PostgreSQL Brasileira > >> <pgbr-geral@listas.postgresql.org.br> > >> Message-ID: > >> <aanlktimfrvh4wrwi2+vjhjh70enw_kxc4dqezdq0=...@mail.gmail.com> > >> Content-Type: text/plain; charset="iso-8859-1" > >> > >> Em 2 de setembro de 2010 10:24, Beto Lima <betol...@gmail.com> > escreveu: > >> > >> > Em 2 de setembro de 2010 10:22, Beto Lima <betol...@gmail.com> > escreveu: > >> > > >> >> Fabrizio e Victor > >> >> Seria quase isso. > >> >> Veja bem: > >> >> > >> >> > >> >> select > >> >> data_sessao::date, > >> >> max(data_sessao) - min(data_sessao) > >> >> from sessao > >> >> where id_usuario = 2 > >> >> group by 1; > >> >> > >> >> os valores são esses: > >> >> > >> >> 2010-09-02 10:01:00 > >> >> 2010-09-02 10:11:00 > >> >> 2010-09-02 10:15:00 > >> >> 2010-09-02 10:20:00 > >> >> > >> >> essa consulta me tráz assim: > >> >> 2010-09-02 00:19:00 > >> >> Ele está pegando o máximo (10:20:00) e diminuindo do mínimo > (10:01:00). > >> >> Eu queria que o resultado fosse: 00:15:00 > >> >> 10:01:00 até 10:11:00 daria 10 minutos e 10:15:00 até 10:20:00 daria > 5 > >> >> minutos. > >> >> Somando daria 15 minutos. > >> >> > >> >> > >> >> > >> Mas o que vc quer não é o intervalo linha a linha??? Pq se for linha a > >> linha > >> da tua tabela vc nao considerou o intervalo entre 10:11:00 e 10:15:00 > que > >> é > >> de 4 minutos... > >> > >> Pelo pouco que entendi desse modelo vc tem uma linha para inicio e outra > >> para fim... é isso??? Vc não tem algum campo que indica isso??? Um tipo > ou > >> um auto-relacionamento??? Pq caso nao tenha e necessite fazer isso > >> "sequencialmente" creio que seja mais indicado escrever uma pequena PL > >> para > >> resolver. > >> > >> -- > >> Fabrízio de Royes Mello > >> >> Blog sobre TI: http://fabriziomello.blogspot.com > >> >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello > >> -------------- Próxima Parte ---------- > >> Um anexo em HTML foi limpo... > >> URL: > >> > http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20100902/33d2106f/attachment-0001.htm > >> > >> ------------------------------ > >> > >> Message: 2 > >> Date: Thu, 2 Sep 2010 11:31:15 -0300 > >> From: Osvaldo Kussama <osvaldo.kuss...@gmail.com> > >> Subject: Re: [pgbr-geral] Digest pgbr-geral, volume 21, assunto 4 > >> To: Comunidade PostgreSQL Brasileira > >> <pgbr-geral@listas.postgresql.org.br> > >> Message-ID: > >> <aanlktikmh3mahc4s5d+xnpqt-mjpf1b99oy5hwd4=...@mail.gmail.com> > >> Content-Type: text/plain; charset=ISO-8859-1 > >> > >> Em 2 de setembro de 2010 10:22, Beto Lima <betol...@gmail.com> > escreveu: > >> > Fabrizio e Victor > >> > Seria quase isso. > >> > Veja bem: > >> > > >> > select > >> > data_sessao::date, > >> > max(data_sessao) - min(data_sessao) > >> > from sessao > >> > where id_usuario = 2 > >> > group by 1; > >> > > >> > os valores são esses: > >> > > >> > 2010-09-02 10:01:00 > >> > 2010-09-02 10:11:00 > >> > 2010-09-02 10:15:00 > >> > 2010-09-02 10:20:00 > >> > > >> > essa consulta me tráz assim: > >> > 2010-09-02 00:19:00 > >> > Ele está pegando o máximo (10:20:00) e diminuindo do mínimo > (10:01:00). > >> > Eu queria que o resultado fosse: 00:15:00 > >> > 10:01:00 até 10:11:00 daria 10 minutos e 10:15:00 até 10:20:00 daria 5 > >> > minutos. > >> > Somando daria 15 minutos. > >> > > >> > >> > >> Reforço o pedido de que não responda a mensagens digest. Você bagunça > >> o histórico da lista. > >> > >> Como você determina que 10:11:00 é um término, e não um início de > >> intervalo? > >> Apenas pela posição relativa? > >> > >> Creio que com o uso de Window Functions você possa conseguir o > >> resultado desejado. > >> http://www.postgresql.org/docs/current/interactive/tutorial-window.html > >> > >> Osvaldo > >> > >> > >> ------------------------------ > >> > >> Message: 3 > >> Date: Thu, 2 Sep 2010 11:56:17 -0300 > >> From: Victor Hugo <vh.cleme...@gmail.com> > >> Subject: Re: [pgbr-geral] Re Re: Somar horas tendo somente uma coluna > >> To: Comunidade PostgreSQL Brasileira > >> <pgbr-geral@listas.postgresql.org.br> > >> Message-ID: > >> <aanlktikjlkqjxvp49hm-s76odvt-5piee-bnjrb5y...@mail.gmail.com> > >> Content-Type: text/plain; charset=ISO-8859-1 > >> > >> Concordo plenamente com o Fabrizio, > >> > >> Remodele a sua tabela desta forma.. > >> > >> id, > >> data_sessao_ini, > >> data_sesssao_fim, > >> id_usuario > >> > >> Aí daria para fazer isso, tendo como base um horário de inicio e fim. > >> > >> []´s > >> vh > >> > >> > >> > >> Em 2 de setembro de 2010 10:37, Fabrízio de Royes Mello > >> <fabriziome...@gmail.com> escreveu: > >> > > >> > > >> > Em 2 de setembro de 2010 10:24, Beto Lima <betol...@gmail.com> > escreveu: > >> >> > >> >> Em 2 de setembro de 2010 10:22, Beto Lima <betol...@gmail.com> > >> >> escreveu: > >> >>> > >> >>> Fabrizio e Victor > >> >>> Seria quase isso. > >> >>> Veja bem: > >> >>> > >> >>> select > >> >>> data_sessao::date, > >> >>> max(data_sessao) - min(data_sessao) > >> >>> from sessao > >> >>> where id_usuario = 2 > >> >>> group by 1; > >> >>> > >> >>> os valores são esses: > >> >>> > >> >>> 2010-09-02 10:01:00 > >> >>> 2010-09-02 10:11:00 > >> >>> 2010-09-02 10:15:00 > >> >>> 2010-09-02 10:20:00 > >> >>> > >> >>> essa consulta me tráz assim: > >> >>> 2010-09-02 00:19:00 > >> >>> Ele está pegando o máximo (10:20:00) e diminuindo do mínimo > >> >>> (10:01:00). > >> >>> Eu queria que o resultado fosse: 00:15:00 > >> >>> 10:01:00 até 10:11:00 daria 10 minutos e 10:15:00 até 10:20:00 daria > 5 > >> >>> minutos. > >> >>> Somando daria 15 minutos. > >> >>> > >> >>> > >> > > >> > Mas o que vc quer não é o intervalo linha a linha??? Pq se for linha a > >> > linha > >> > da tua tabela vc nao considerou o intervalo entre 10:11:00 e 10:15:00 > >> > que é > >> > de 4 minutos... > >> > Pelo pouco que entendi desse modelo vc tem uma linha para inicio e > outra > >> > para fim... é isso??? Vc não tem algum campo que indica isso??? Um > tipo > >> > ou > >> > um auto-relacionamento??? Pq caso nao tenha e necessite fazer isso > >> > "sequencialmente" creio que seja mais indicado escrever uma pequena PL > >> > para > >> > resolver. > >> > -- > >> > Fabrízio de Royes Mello > >> >>> Blog sobre TI: http://fabriziomello.blogspot.com > >> >>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello > >> > > >> > _______________________________________________ > >> > pgbr-geral mailing list > >> > pgbr-geral@listas.postgresql.org.br > >> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >> > > >> > > >> > >> > >> > >> -- > >> []´s > >> Victor Hugo > >> > >> > >> ------------------------------ > >> > >> _______________________________________________ > >> pgbr-geral mailing list > >> pgbr-geral@listas.postgresql.org.br > >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >> > >> > >> Fim da Digest pgbr-geral, volume 21, assunto 8 > >> ********************************************** > > > > > > > > -- > > Att. > > Beto Lima > > > > _______________________________________________ > > pgbr-geral mailing list > > pgbr-geral@listas.postgresql.org.br > > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > > > > > > -- > []´s > Victor Hugo > > > ------------------------------ > > Message: 2 > Date: Fri, 3 Sep 2010 07:40:56 -0700 (PDT) > From: José Luis Ramos Jr <jose.ramos.caj...@gmail.com> > Subject: [pgbr-geral] José Luis Ramos Jr wants to stay in touch on > LinkedIn > To: Mateus Sampaio <pgbr-geral@listas.postgresql.org.br> > Message-ID: > <1262823353.8157746.1283524856447.javamail....@ech3-cdn07.prod> > Content-Type: text/plain; charset="utf-8" > > LinkedIn > ------------José Luis Ramos Jr requested to add you as a connection on > LinkedIn: > ------------------------------------------ > > Mateus, > > I'd like to add you to my professional network on LinkedIn. > > - José Luis Ramos Jr > > Accept invitation from José Luis Ramos Jr > > http://www.linkedin.com/e/1b7qwt-gdn5k5mk-52/hJyn_mKDb3AYKem6pM_q9mB_905WKe_qzCqrQvDjbGRKE3zlm8R7/blk/I8130617_20/6lColZJrmZznQNdhjRQnOpBtn9QfmhBt71BoSd1p65Lr6lOfP0OnPsNdz0Pcjx9bQFIcmthhPpebPkSdz0ScP8Pdz4LrCBxbOYWrSlI/EML_comm_afe/ > > View invitation from José Luis Ramos Jr > > http://www.linkedin.com/e/1b7qwt-gdn5k5mk-52/hJyn_mKDb3AYKem6pM_q9mB_905WKe_qzCqrQvDjbGRKE3zlm8R7/blk/I8130617_20/c39vdP4Sc3cNe4ALqnpPbOYWrSlI/svi/ > > ------------------------------------------ > DID YOU KNOW you can use your LinkedIn profile as your website? Select a > vanity URL and then promote this address on your business cards, email > signatures, website, etc > http://www.linkedin.com/e/1b7qwt-gdn5k5mk-52/ewp/inv-21/ > > > > ------ > (c) 2010, LinkedIn Corporation > -------------- Pr?a Parte ---------- > Um anexo em HTML foi limpo... > URL: > http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20100903/3dea40b4/attachment-0001.htm > > ------------------------------ > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > Fim da Digest pgbr-geral, volume 21, assunto 11 > *********************************************** > -- Att. Beto Lima
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral