안녕하십니까!
WITH문을 사용한 쿼리를, WITH가 없지만 같은 기능을 하게끔 수정해야하는 상황인데...
하나의 쿼리로는 불가하고, 쿼리 2개를 나누어 만들어야하는지 궁금합니다.
아래 쿼리를 WITH가 없게끔 어떻게 수정할 수 있을까요?
불가피하다면 쿼리가 2개로 나뉘어도 괜찮습니다!
답변 간절히 기다리겠습니다!
WITH A AS (
SELECT IP, COUNTRY, COUNT(*) CNT, RATIO_TO_REPORT(COUNT(*)) OVER(PARTITION BY IP) RAT
FROM COUNTRY_TABLE
GROUP BY IP, COUNTRY
ORDER BY IP, COUNTRY)
SELECT IP, COUNTRY, DECODE(TRUNC(RAT, 3)*100, NULL, '', TRUNC(RAT, 3)*100||'%') PREFERENCE
FROM A
WHERE RAT>0.8;
with 가 불편하면 from A를 위의 with절의 쿼리를 인라인뷰로 바꾸시면 됩니다
select .... from ( with 안에 선언된 쿼리 ) a
WITH 는 INLIN-VIEW(From절의 서브쿼리)를 Select 절 위로 올린 것이라고 보면 됩니다.
작성하신 쿼리의 Decode 부분은 불필요한 구문입니다.
RAT 값이 널이 나올수 없는 쿼리입니다.