Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION st() RETURNS varchar(255) AS $$
- DECLARE
- cur CURSOR FOR SELECT station_id, train_id, arrive_time, departure_time FROM schedules;
- cur2 CURSOR FOR SELECT station_id, train_id, arrive_time, departure_time FROM schedules;
- curmax integer;
- maximum integer;
- maxstation varchar(255);
- _count integer;
- _station_name varchar(255);
- _station_name2 varchar(255);
- _train_code varchar(50);
- _train_code2 varchar(50);
- _arrive_time time;
- _arrive_time2 time;
- _departure_time time;
- _departure_time2 time;
- BEGIN
- OPEN cur;
- OPEN cur2;
- execute 'SELECT count(*) FROM schedules' into _count;
- maximum := 1;
- maxstation := 'Везде равно';
- FOR i IN 1.._count LOOP
- curmax := 1;
- FETCH NEXT FROM cur INTO _station_name, _train_code, _arrive_time, _departure_time;
- IF _arrive_time = null OR _departure_time = null THEN
- CONTINUE;
- END IF;
- FOR j IN 1.._count LOOP
- FETCH NEXT FROM cur2 INTO _station_name2, _train_code2, _arrive_time2, _departure_time2;
- IF _arrive_time2 = null OR _departure_time = null THEN
- CONTINUE;
- END IF;
- IF _train_code <> _train_code2 THEN
- IF _arrive_time <= _arrive_time2 AND _departure_time >= _arrive_time2 THEN
- curmax := curmax + 1;
- ELSIF _arrive_time <= _departure_time2 AND _departure_time >= _departure_time2 THEN
- curmax := curmax + 1;
- END IF;
- END IF;
- END LOOP;
- IF curmax > maximum THEN
- maximum := curmax;
- maxstation := _station_name;
- END IF;
- END LOOP;
- return maxstation;
- END
- $$ LANGUAGE plpgsql;
- SELECT st();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement