- 임시 relation을 만든다.
with 절 | - DB에 남지 않음, 해당 SFW 실행할때만 존재한다. 임시테이블 Q) find all departments with the maximum budget (= 단독 1위일수도 있고, 공동1위일수도 있음) => with max_budget ( value ) as 테이블명 = max_budget, 컬럼명 value. 컬럼1개 ( select max(budget) dept테이블의 budget의 최고값. 레코드도 1개임. from department ) //학과이름은 모름. 최고값만 온다 select department.name from department, max_budget //조인, 짝짓기함. 위에서 만든 테이블 넣음 where department.budget = max_budget.value ; //여기서 값을 찾아서 이름을 얻는다. // 테이블명 . 컬럼명 적기! with절을 통해 최고값을 찾아두고, 그걸 본 SFW의 from으로 보내 함께 비교한다. Q) find all departments’ name where total salary is greater than average of total salary at all dept => with dept_total ( dept_name, value ) as ( select dept_name, sum(salary) from instructor group by dept_name ) , dept_total_avg ( value ) as ( select avg(value) // 위의 테이블의 value값들의 평균이니까 from dept_total ) // 위의 테이블로 계산 select dept_name // dept_name이름 가진 컬럼 1개라서 from dept_total, dept_total_avg where dept_total.value > dept_total_avg.value ; instructor에서 dept_name이랑 급료 합 구한 테이블과, 전체학과 급료 평균담은 투플1개짜리 만듦 카티션곱해서 비교하기 |
'데이터베이스설계' 카테고리의 다른 글
[데이터베이스설계] 3-13 DB 변경연산 - deletion (0) | 2025.02.15 |
---|---|
[데이터베이스설계] 3-12 Scalar 서브쿼리 (0) | 2025.02.15 |
[데이터베이스설계] 3-10 from 절의 sub쿼리 (0) | 2025.02.15 |
[데이터베이스설계] 3-9 exist (0) | 2025.02.15 |
[데이터베이스설계] 3-8 set 멤버십 ( in / not in ) (0) | 2024.11.27 |