大家好,这是我的桌子.
我想要创建一个触发器函数,无论何时‘INSERTed’在timetype列上,它都会总结mytable中的所有时间,其中fnname = 'ff‘和timetype = 'Lap’,但只有当时间索引具有最高的十进制值时(例如。在mytable = 1.1、2.3、3.3中(假设最大可能的十进制值为1.9或2.9或3.9,子值on)。因此,在上面的表中,触发器函数将自动总结所有蓝色突出显示的吱吱声,并将其放在最后一个timeelpase行(其中timetype = 'Total')。我怎么能这么做?
谢谢高级。
发布于 2015-06-29 15:18:25
按时间索引的整数部分对数据进行分组:
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)
https://stackoverflow.com/questions/31126667
复制