Post by Victor HugoVc quer diminuir usando função de agregação SUM ??? SUM é para somar...
é isso mesmo ??? Se não for, resolva com a query abaixo
SELECT SUM(EXTRACT (minutes from data_sessao))
FROM horas where id_usuario = 4
aí no caso ele irá extrair os minutos do primeiro valor que é 15 + do
segundo valor que é 17 contabilizando um total de 32 minutos.
Exato... só exemplificando o que pode acontecer:
***@bdteste=# create table sessao (id serial, data_sessao timestamp,
id_usuario integer);
NOTICE: CREATE TABLE will create implicit sequence "sessao_id_seq" for
serial column "sessao.id"
CREATE TABLE
***@bdteste=# insert into sessao (data_sessao, id_usuario) values
('2010-09-01 14:15:00.000000', 4), ('2010-09-01 14:17:00.000000', 4);INSERT
0 2
***@bdteste=# insert into sessao (data_sessao, id_usuario) values
('2010-09-02 13:10:00.000000', 4), ('2010-09-02 13:18:00.000000', 4);
INSERT 0 2
***@bdteste=# select max(data_sessao) - min(data_sessao) from sessao;
?column?
----------
23:03:00
(1 row)
Nesse caso foi verificado o intervalo de tempo entre a menor e maior
data/hora, mas creio que isso não seja o desejado, então quem sabe:
***@bdteste=# select data_sessao::date, max(data_sessao) -
min(data_sessao) from sessao group by 1;
data_sessao | ?column?
-------------+----------
2010-09-02 | 00:08:00
2010-09-01 | 00:02:00
(2 rows)
Ou ainda:
***@bdteste=# select sum(intervalo) from (select data_sessao::date,
max(data_sessao) - min(data_sessao) as intervalo from sessao group by 1) as
tempo;
sum
----------
00:10:00
(1 row)
Dai depende dos teus requisitos!
--
Fabrízio de Royes Mello
Post by Victor HugoBlog sobre TI: http://fabriziomello.blogspot.com
Perfil Linkedin: http://br.linkedin.com/in/fabriziomello