SELECT tabl1.idserial, tabl1.log, tabl1.SET, tabl1.serother, tabl1.vremya, tabl1.COUNT, tabl1.address FROM tabl1 WHERE ((tabl1.serother, tabl1.vremya) = ( SELECT d1.serother, MAX(d1.vremya) AS MAX FROM tabl1 d1 WHERE d1.serother = tabl1.serother GROUP BY d1.serother ));
CREATE OR REPLACE FUNCTION public.table1_tr_f ()RETURNS TRIGGER AS$body$DECLARE vidserial2 INTEGER;BEGIN--проверяем наличие во 2 таблицеBEGIN SELECT idserial INTO vidserial2 FROM table2 WHERE serother=NEW.serother;EXCEPTIONWHEN NO_DATA_FOUND THEN vidserial2:=NULL;END;IF vidserial2>0 THEN--есть запись - обновляем UPDATE table2 SET log=NEW.log,SET=NEW.SET,vremya=NEW.vremya,COUNT=NEW.COUNT,address=NEW.address WHERE idserial=vidserial2;ELSE--нет записи - вставляем INSERT INTO table2(log,SET,serother,vremya,COUNT,address)VALUES(NEW.log,NEW.SET,NEW.serother,NEW.vremya,NEW.COUNT,NEW.address);END IF; RETURN NEW;END;$body$LANGUAGE 'plpgsql'VOLATILECALLED ON NULL INPUTSECURITY INVOKERCOST 100;
CREATE TRIGGER temp1_tr AFTER INSERT ON public.table1 FOR EACH ROW EXECUTE PROCEDURE public.table1_tr_f();
SELECT * FROM table1 WHERE time_field BETWEEN to_timestamp(to_char(DATE(now() - INTERVAL '7 days'),'dd.mm.yyyy'), 'dd.mm.yyyy HH24:MI:SS')AND to_timestamp(to_char(DATE(now()),'dd.mm.yyyy') || ' 23.59.59', 'dd.mm.yyyy HH24:MI:SS')