아래와 같은 로데이터가 있습니다.
A컬럼 B컬럼
==== =====
92 94
94 102
94 106
102 106
실제 조회되어야 할 데이터는
즉 94, 106 은 94, 102 와 102, 106으로 세분화되므로 94,106의 대범위는 제외해야 하는 쿼리를
작성해야 합니다. 쉬운것 같은데,, 잘 안되네요..
좀 더 복잡하고 다양한 경우가 발생 가능한지가 관건인데요. 위처럼 포함관계가 명확한 경우만 존재하는지? 포함관계가 명확하게 딱 떨어지지 않는 경우는 없는지? 우선 포함관계가 명확하다는 가정을 한다면?
WITH t AS ( SELECT 92 s, 94 e FROM dual UNION ALL SELECT 94, 102 FROM dual UNION ALL SELECT 94, 106 FROM dual UNION ALL SELECT 102, 106 FROM dual ) SELECT * FROM t m WHERE NOT EXISTS (SELECT 1 FROM t s WHERE NOT (s.s = m.s AND s.e = m.e) AND s.s >= m.s AND s.e <= m.e ) ; 만약 포함관계가 정확하게 맞아 떨어지지 않는 경우가 존재한다면? 상당히 어려운 문제가 되어 버립니다. 경우의 수도 상당히 많을 것이고, 각 경우마다 어떤 결과가 나와야 할지도 판단하기 어려울 듯.
WITH t AS ( SELECT 92 s, 94 e FROM dual UNION ALL SELECT 94, 102 FROM dual UNION ALL SELECT 94, 106 FROM dual UNION ALL SELECT 102, 106 FROM dual ) SELECT * FROM t m WHERE NOT EXISTS (SELECT 1 FROM t s WHERE NOT (s.s = m.s AND s.e = m.e) AND s.s >= m.s AND s.e <= m.e ) ;
만약 포함관계가 정확하게 맞아 떨어지지 않는 경우가 존재한다면? 상당히 어려운 문제가 되어 버립니다. 경우의 수도 상당히 많을 것이고, 각 경우마다 어떤 결과가 나와야 할지도 판단하기 어려울 듯.