如何根据PostgreSQL中的枚举列总结所有行?

时间:2015-06-29 22:31:52

标签: postgresql function triggers sum max

))大家好,这是我的桌子......

enter image description here

我想创建一个触发器功能,无论什么时候总计'在时间类型列上插入它会使所有时间从表格中删除从表格中取出fnname =' ff' AND timetype =' Lap'但只有在timeindex具有最高十进制值的情况下(例如,在mytable = 1.1,2.3,3.3中)(让我们说最大可能的十进制值为1.9或2.9或3.9和son on)。因此,在上面的表格中,触发器功能会自动汇总所有蓝色突出显示的squeares并将其放在最后一个timeelpase行中(其中timetype =' Total')。我怎么能这样做?

谢谢高级。

1 个答案:

答案 0 :(得分:0)

按时间索引的整数部分对数据进行分组:

select distinct on (floor(timeindex)::int) 
    floor(timeindex)::int idx, timeindex, timeelapse
from mytable
where fnname = 'ff'
and timetype = 'Lap'
order by 1, 2 desc;

 idx | timeindex | timeelapse 
-----+-----------+------------
   1 |       1.1 | 01:00:00
   2 |       2.3 | 03:00:00
   3 |       3.3 | 08:00:00
(3 rows)

在触发器中计算上述查询的总和:

select sum(timeelapse) from (
    select distinct on (floor(timeindex)::int) 
        floor(timeindex)::int idx, timeindex, timeelapse
    from mytable
    where fnname = 'ff'
    and timetype = 'Lap'
    order by 1, 2 desc
    ) alias;

   sum    
----------
 12:00:00
(1 row)