본문 바로가기
데이터베이스설계

[데이터베이스설계] 3-7 having절, 중첩 질의문

by 젼젼39 2024. 11. 26.
having절 Having + 조건 => group by가 있을 때, 그룹들 중 선택할 때 사용. 집계함수 많이 씀
 
-      having 절에 집계함수 들어가는 일이 많다
-      group by가 있을 때, 그룹들 중 선택할 때 having 절을 사용
-      where 절은 그룹 형성 전에 실행되고, having 절은 그룹 구성 후에 적용됨
-      having 절은 select 전에 실행되어서, select에서 고르지 않은 컬럼을 조건으로 써도 됨
 

Q) find the names and average salaries of all departments whose average salary is greater than 42000
=> select dept_name, avg(salary) as avg_salary
    from instructor
    where TRUE                // 여기서 42000 비교하는 거 아님!! 그룹단위라 having에서 함
    group by dept_name
    having avg(salary) > 42000;    // 여기서 조건 만족하는 그룹 선택함
중첩 질의문 중첩 질의문 Nested Subqueries = 다른 쿼리 내에 중첩되는 select-from-where
select -> 포함시킬 컬럼들 열거시 일부 컬럼을 컬럼명 대신 SFW 서브쿼리로 대체(단일값 내는 서브쿼리)
from    -> 테이블 열거그 테이블 중 하나가 SFW의 서브쿼리(결과는 relation)로 대체되는 경우
where -> 조건을 주는데 그 조건 자체가 그 속에 SFW를 포함하는컬럼 <몇가지 연산> (SFW 서브쿼리)
 
바깥쪽 SFW = outer query
안쪽 SFW = sub query, inner query

 

  select *
from R
where A = 5 and B < 100
select *
from R
where A in ( select A
                    from S
                    where B = 20 )
  select *
from R
where P
select *
from R
where P

 

Outer 질의 쪽의 투플의 컬럼값이 투입되어 실행된다면 co-related

  select *
from R
where A in ( select A
            from S
            where B = 20 )
select *
from R
where A in ( select A
                    from S
                    where B = R.B )