다음 ‘사원’과 ‘부서’ 테이블에 대한 SQL문의 수행 결과가 다른 것… | [7급 국가직 데이터베이스론] 24년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 24년 1회차
다음 ‘사원’과 ‘부서’ 테이블에 대한 SQL문의 수행 결과가 다른 것은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
| 사원 | ||||
|---|---|---|---|---|
| 사번 | 이름 | 부서번호 | 급여 | 직속상사 |
| 1 | Kim | 10 | 500 | NULL |
| 2 | Kwon | 20 | 500 | 3 |
| 3 | Park | 20 | 700 | NULL |
| 4 | Choi | 30 | 600 | 1 |
| 5 | Cho | 10 | 300 | 3 |
| 6 | Lee | 20 | 550 | 4 |
| 7 | Yoon | 30 | 400 | 3 |
| 8 | Chae | 20 | 650 | 1 |
| 9 | Nam | 10 | 430 | 4 |
| 10 | Ha | 30 | 200 | NULL |
| 부서 | ||
|---|---|---|
| 부서번호 | 부서이름 | 사무실위치 |
| 10 | 인사과 | 101호 |
| 20 | 개발팀 | 102호 |
| 30 | 총무과 | 103호 |
1
SELECT 이름
FROM 사원
WHERE 이름 LIKE ‘_a%’ AND 급여 > 500;
2
SELECT E.이름
FROM 사원 AS E INNER JOIN 부서 AS D ON E.부서번호 = D.부서번호
WHERE D.사무실위치 = ‘102호’ AND E.직속상사 is NULL;
3
SELECT 이름
FROM 사원
WHERE 이름 NOT IN (SELECT 이름 FROM 사원
WHERE 급여 < ANY (SELECT 급여 FROM 사원));
4
SELECT 이름
FROM 사원
WHERE 부서번호 IN (SELECT 부서번호 FROM 사원
GROUP BY 부서번호
HAVING COUNT(*) > 3);
해설
나머지 세 질의는 결과가 Park 한 명이지만, 인원이 3명을 넘는 부서의 사원을 찾는 질의는 Kwon, Park, Lee, Chae 4명을 반환하여 결과가 다르다.
부서별 인원은 부서번호 10이 3명, 20이 4명, 30이 3명이므로 COUNT(*) > 3을 만족하는 부서는 20뿐이고, 그 소속 사원 전원이 결과가 된다.
- LIKE ‘_a%’ AND 급여 > 500: 두 번째 글자가 a인 사원은 Park·Nam·Ha이고, 급여가 500을 넘는 사원은 Park뿐이다.
- 102호이면서 직속상사가 NULL: 102호는 개발팀(부서번호 20)이며 그중 직속상사가 NULL인 사원은 Park이다.
- NOT IN과 < ANY: 급여 < ANY(전체 급여)는 최고 급여 700보다 적은 사원 전원이므로, 이를 제외하면 최고 급여자 Park만 남는다.
오류나 개정된 내용이 보이면 알려주세요