Oracle 기준으로 다음 ㉠의 결과 행 수와 ㉡의 결과 값을 순서대로… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 3회
Oracle 기준으로 다음 ㉠의 결과 행 수와 ㉡의 결과 값을 순서대로 나열한 것은?[부서]
| 부서코드 | 부서명 |
|---|---|
| 10 | 기획 |
| 20 | 영업 |
| 30 | 개발 |
| 40 | 인사 |
[직원]
| 사번 | 이름 | 부서코드 | 급여 |
|---|---|---|---|
| 101 | 김윤 | 10 | 450 |
| 102 | 이솔 | 10 | 280 |
| 103 | 박건 | 20 | 320 |
| 104 | 최담 | 20 | 350 |
| 105 | 정우 | 30 | 250 |
| 106 | 조현 | 30 | 260 |
| 107 | 한결 | (null) | 500 |
㉠
SELECT D.부서명, E.이름 FROM 부서 D, 직원 E WHERE D.부서코드 = E.부서코드(+) AND E.급여(+) >= 300;
㉡
SELECT COUNT(*) FROM 부서 CROSS JOIN 직원;
1
3, 28
2
7, 24
3
5, 28
4
5, 24
해설
㉠은
E.급여(+) >= 300까지 (+) 가 붙어 LEFT OUTER JOIN 의 ON 조건이 되므로 5행이고, ㉡의 CROSS JOIN 은 4×7=28행이다.㉠에서 기획은 김윤, 영업은 박건·최담과 결합하고, 급여 300 미만뿐인 개발과 직원이 없는 인사는 직원 열이 NULL 인 한 행씩 남는다.
- 3행은 급여 조건을 WHERE 필터로 본 결과로, 개발·인사 행이 사라진다.
- 7행은 급여 조건을 무시하고 부서코드만으로 외부 조인한 결과이다.
- 24는 부서코드가 NULL 인 직원을 곱에서 뺀 값이나, CROSS JOIN 은 조건 없이 모든 행을 곱한다.
오류나 개정된 내용이 보이면 알려주세요