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

Responder a