oracle with table as 사용법 정리
서브쿼리 섹션(subquery factoring)이라고도 하는 WITH AS 짧은 말은 많은 일을 할 수 있도록 SQL 단편을 정의합니다. 이 SQL 단편은 전체 SQL 문장에 사용됩니다.가끔은 SQL 문장의 가독성을 높이기 위해서, UNION ALL의 다른 부분에서 데이터를 제공하는 부분일 수도 있다.
특히 UNION ALL에는 유용합니다.UNION ALL은 부분마다 같을 수 있지만 부분마다 한 번씩 실행하면 비용이 너무 많이 들기 때문에 WITH AS 짧은 말을 사용할 수 있고 한 번만 실행하면 된다.WITH AS 구문이 정의한 테이블 이름이 두 번 이상 호출되면 최적화기는 자동으로 WITH AS 구문이 가져온 데이터를 TEMP 테이블에 넣고 한 번만 호출되면 사용하지 않습니다.힌트 materialize는 WITH AS 구문의 데이터를 전역 임시 테이블에 강제로 넣는 것이다.많은 조회는 이런 방법을 통해 속도를 높일 수 있다.
1. with table as는 임시표를 작성하여 한 번에 분석하고 여러 번 사용할 수 있다
2. 복잡한 조회에 대해 with table as를 사용하면 공공 조회 부분을 추출할 수 있고 여러 번 조회할 때 효율을 높일 수 있다.
3. 읽기 용이성 향상
with table as는 임시 테이블을 만드는 것과 같다.
Oracle 9i에 WITH 구문이 추가되어 질의의 하위 질의의 이름을 SELECT 문의 맨 앞에 지정할 수 있습니다.
문법 with tempname as (select....) select ...
예: with t as(select * from emp where depno=10)select * from t where empno=xxx
with wd as(select did,arg(salary) 평균 급여from work group by did), emas(select emp.*, w.salary from emp left join work w on emp.eid = w.eid) select * from wd,emwhere wd.did =em.did and wd.평균 임금>em.salary;
주의: 이 임시 테이블은 검색에만 사용할 수 있고 업데이트에는 사용할 수 없습니다
with table_temp as (
select b.filename,count(*) ct from originalsalesdata o,salesdatafile b
where o.salesdatafileid = b.salesdatafileid
and to_char(b.startdate,'yyyymm')='201705' and to_char(b.enddate,'yyyymm')='201705'
group by b.filename
)
select distinct(t.filename),t.ct from table_temp t, table_temp t2
where t.filename <> t2.filename and t.ct = t2.ct
order by t.ct desc;
참조:
http://www.cnblogs.com/fygh/archive/2011/08/31/2160266.html
http://blog.csdn.net/feier7501/article/details/24460279
http://www.cnblogs.com/wishyouhappy/p/3684148.html
http://blog.csdn.net/feier7501/article/details/21811319
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.