SELECT
f.kto,
to_char(f.poczatek_czasu, 'yyyy-mm-dd hh24:mi:ss') OD,
to_char(f.koniec_czasu, 'yyyy-mm-dd hh24:mi:ss') DO,
ROUND((((f.koniec_czasu - f.poczatek_czasu) * 86400 / 3600) * 60), 2) CZAS_W_MINUTACH,
ROUND((((f.koniec_czasu - poprz.koniec_czasu) * 86400 / 3600) * 60), 2) CZAS_OD_POPRZEDNIEGO
FROM firma f
JOIN firma poprz
ON poprz.koniec_czasu = (SELECT
MAX(koniec_czasu)
FROM firma
WHERE koniec_czasu < f.koniec_czasu)
ORDER BY f.poczatek_czasu
Gdyby ktoś chciał się pobawić sqlfiddle:
CREATE TABLE firma
(
kto varchar2(30),
poczatek_czasu Date,
koniec_czasu Date
);
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:03:08','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:03:08','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:08:08','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:08:35','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:08:35','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:08:53','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:08:53','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:09:20','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:09:20','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:09:41','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:09:41','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:09:58','YYYY-MM-DD HH24:MI:ss'));
INSERT INTO firma
(kto,poczatek_czasu,koniec_czasu)
VALUES
('Ryszard', to_date('2014-02-15 14:09:58','YYYY-MM-DD HH24:MI:SS'),
to_date('2014-02-15 14:10:23','YYYY-MM-DD HH24:MI:ss'));