GeeksforGeeks

sql WITH 절은 Oracle9i release2 데이터베이스에서 Oracle 에 의해 도입되었습니다. SQL 항을 제공 할 수 있습니 하위 쿼리도록 차단 이름(프로세스 또한이라는 하위 쿼리 refactoring),참조할 수 있는 여러 가지 장소에 SQL 쿼리가 있습니다.

  • 절은이 임시 관계의 출력을 사용할 수 있도록 임시 관계를 정의하는 데 사용되며 WITH 절과 관련된 쿼리에서 사용됩니다.
  • 쿼리에 있는 와 관련된 절을 사용하여 작성할 수도 있습니다 중첩된 하위 쿼리를 하지만 그렇게 하면 더 많은 복잡성을 추가 읽기/디버깅 SQL 쿼리가 있습니다.
  • WITH 절은 모든 데이터베이스 시스템에서 지원되지 않습니다.
  • 에 할당된 이름 sub-쿼리로 처리되었지만 인라인 보거나 테이블
  • SQL 항에 의해 도입되었 Oracle Oracle9i 릴리스 2 데이터베이스입니다.

구문:

WITH temporaryTable (averageValue) as (SELECT avg(Attr1) FROM Table), SELECT Attr1 FROM Table WHERE Table.Attr1 > temporaryTable.averageValue;

에서 쿼리를 절을 정의하는 데 사용되는 임시 관계 temporaryTable 만 있는 1 특성 averageValue. averageValue 는 관계 테이블에 설명 된 열 Attr1 의 평균값을 보유합니다. WITH 절 뒤에 오는 SELECT 문은 관계 테이블의 Attr1 값이 WITH 절 문에서 얻은 평균값보다 큰 튜플 만 생성합니다.

참고: WITH 절이있는 쿼리가 실행되면 먼저 절 내에 언급 된 쿼리가 평가되고이 평가의 출력은 임시 관계에 저장됩니다. 이 후,마지막으로 생성 된 임시 관계를 사용하는 WITH 절과 관련된 주요 쿼리가 실행됩니다.

쿼리

예제 1:모든 직원의 월급은 이상을 평균 급여의 모든 직원이다.
관계의 이름: Employee

EmployeeID Name Salary
100011 Smith 50000
100022 Bill 94000
100027 Sam 70550
100845 Walden 80000
115585 Erik 60000
1100070 Kate 69000

SQL Query:

WITH temporaryTable(averageValue) as (SELECT avg(Salary) from Employee), SELECT EmployeeID,Name, Salary FROM Employee, temporaryTable WHERE Employee.Salary > temporaryTable.averageValue;

Output:

EmployeeID 이름
100022 94000
100845 Walden 80000

설명:평균 급여의 모든 직원들은 70591. 따라서 급여가 얻은 평균보다 많은 모든 직원은 출력 관계에 있습니다.

실시예 2: 모든로부터 총 급여의 모든 조종사는 항공사는 더 이상의 평균 총 급여의 모든 파일에서 데이터베이스입니다.

관계의 이름: Pilot

EmployeeID Airline Name Salary
70007 Airbus 380 Kim 60000
70002 Boeing Laura 20000
10027 Airbus 380 Will 80050
10778 Airbus 380 Warren 80780
115585 Boeing Smith 25000
114070 Airbus 380 Katy 78000

SQL Query:

WITH totalSalary(Airline, total) as (SELECT Airline, sum(Salary) FROM Pilot GROUP BY Airline), airlineAverage(avgSalary) as (SELECT avg(Salary) FROM Pilot ) SELECT Airline FROM totalSalary, airlineAverage WHERE totalSalary.total > airlineAverage.avgSalary;

출력:

항공

Airbus380

설명: 총 급여의 모든 조종사의 에어버스 380=298,830 과 그의 보잉=45000. 표 파일럿에있는 모든 조종사의 평균 급여=57305. 에어 버스 380 의 모든 조종사의 총 급여 만이 얻은 평균 급여보다 크기 때문에 에어 버스 380 은 출력 관계에 있습니다.

중요 사항:

  • SQL 항은 좋은 함께 사용할 경우 복잡한 SQL 문을 보다는 오히려 단순한 사람
  • 그것은 또한 당신이 휴식 복잡한 SQL 쿼리에는 작은 것들로 쉽게 디버깅을 위해 처리하는 복잡한 쿼리를 처리합니다.
  • sql WITH 절은 기본적으로 일반 하위 쿼리에 대한 드롭 인 대체품입니다.

이 기사는 Mayank Kumar 가 기고 한 것입니다. 는 경우 다음과 같 GeeksforGeeks 및 참여하고 싶다면,당신은 또한 수를 사용하여 문서를 써주세요 contribute.geeksforgeeks.org 또는 메일을 귀하의 문서 [email protected]. GeeksforGeeks 메인 페이지에 나타나는 기사를보고 다른 괴짜를 도와주세요.

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다