Input:
Expected Output:
CREATE TABLE t_dist
(
SOURCE VARCHAR2(20 BYTE),
DESTINATION VARCHAR2(20 BYTE),
DISTANCE NUMBER
);
Insert into t_dist values ('DUBAI','INDIA',2475);
Insert into t_dist values ('INDIA','DUBAI',2475);
Insert into t_dist values ('INDIA','QATAR',2885);
Insert into t_dist values ('QATAR','INDIA',2885);
Insert into t_dist values ('INDIA','SAUDI',3496);
COMMIT;
select * from t_dist;
Step1:
SELECT d.*,
row_number() over (partition BY LEAST(SOURCE, DESTINATION),
GREATEST(SOURCE, DESTINATION), distance order by distance )AS RNUM
FROM t_dist d;
DUBAI INDIA 2475 1
INDIA DUBAI 2475 2
INDIA QATAR 2885 1
QATAR INDIA 2885 2
INDIA SAUDI 3496 1
Step2:
WITH t AS
(SELECT d.*,
row_number() over (partition BY LEAST(SOURCE, DESTINATION),
GREATEST(SOURCE, DESTINATION), distance order by distance )AS RNUM
FROM t_dist d
)
SELECT * FROM t WHERE RNUM =1;
DUBAI INDIA 2475 1
INDIA QATAR 2885 1
INDIA SAUDI 3496 1
No comments:
Post a Comment