데이터베이스

오라클 SQL_ ANY, SOME, ALL, NOT EXISTS, NOT IN 연산, 부양가족, 사원, 평균 봉급,

스윙스윙 2021. 9. 10. 17:40

▣ 오라클 SQL_ ANY, SOME, ALL, NOT EXISTS, NOT IN 연산

 

ANY(SOME), ALL은 주로 서브쿼리와 함께 사용하는 다중 행 연산자

ANY는 조건을 만족하는 값이 하나라도 있으면 결과를 리턴하고,

ALL은 모든 값이 조건을 만족해야 결과를 리턴

SOME은 ANY와 이름만 다를뿐 동일한 기능의 연산자

 


GROUP BY 절이 사용되었으므로 ㉠에는 WHERE절이 아닌 HAVING 절을 사용하여 조건을 명시

평균 봉급을 비교하므로 AVG( ) 함수를 이용

“가장 높은 부서명(DeptName)”을 검색하므로 서브쿼리 모든 평균값보다 큰 값을 찾아야 하므로

some(혹은 ANY)가 아닌 all 을 ㉡ 에 위치해야 함

서브쿼리도 부서별 평균 봉급을 조회해야 하므로 GROUP BY DeptName 으로 계산

 


 

2018년 64번

정답 : 1번

ANY는 조건을 만족하는 값이 하나라도 있으면 결과를 리턴

 


 

2019년 57번

정답 : 4번

ANY는 조건을 만족하는 값이 하나라도 있으면 결과를 리턴

사원이 소속된 부서 중 어떤 하나의 부서와 같지 않은 부서를 검색하므로,

사원이 소속되지 않은 부서뿐만 아니라 모든 부서를 추출하게 되므로 올바르지 않은 질의임

 

'ALL' 키워드가 들어가야함

 


2021년 67번

정답 : 1번

"부양가족이 없는 사원의 이름을 검색하라"

 

WHERE 조건절에서 'NOT IN'을 사용하려면 비교 대상 컬럼이

앞에 위치해야 됨. 그러므로 (가)는 'NOT EXISTS'구문을 사용해야 함

 

직원정보 릴레이션 'SSN'과 부양가족 릴레이션의 'ESSN'을

연결해야 함. (다) 'SSN = ESSN'임

 

(나)는 부양가족이 없는 모든 사원을 검색해야 되니 '*' 임

 


2012년 54번

정답 : 1번, 3번

2) 성별 비교가 없음

4) NOT EXISTS 이므로 반대의 질의문임 '자신과 성별이 다른 부양가족을 가진 직원의 이름을 검색'

 


2013년 70번

정답 : 3번

부속질의문의 결과는 2. 전기공학과임

부속질의문 결과에 속하지 않는 st_name을 student 테이블에서 조회하는 질의문 (not exists)

전기공학과 투플을 제외하면 st_name => Yoo, Kim, Park, Jeong의 4건의 결과가 조회됨

 count(st_name)은 4임 

 


2014년 64번

정답 : 4번

음료번호가 커피인 회원과 음료번호가 홍차인 회원을AND 조건으로 조회하였음

 

 


2015년 68번

정답 : 1번