실전모의고사 2회 42번 문제
85
7 asked
보기 1번은 왜 답이 안되는건가요??설명에는 불필요하게 복잡하다고만 나와있는데요.
결과는 1번도 맞는것 같긴한데요. 1번에서 쿼리 오류나 답이 아닌 특정한 경우가 있는건가요?
Answer 2
0
안녕하세요. KOKODAE.KO 님.
이 문제는 가장 적절한 쿼리를 구하는 문제입니다. 보기 1번도 4번과 같이 동일한 결과를 나타냅니다. 하지만 쿼리 자체가 최적화 되어 있지는 못합니다. 그래서 가장 적절한 쿼리는 4번이 적합하다고 할 수 있습니다. 실제 문제도 이런 식으로 나올 수 있습니다. 동일한 결과를 나타내기 때문에 실전 시험에서도 이슈를 제기할 수도 있습니다만, 가급적이면 가장 적절해 보이는 것으로 선택하는 게 더 좋을 거 같습니다.
아래는 실습 쿼리입니다. 참고하십시오. 감사합니다.
-- 1. 기존 테이블이 있다면 삭제 (선택 사항)
DROP TABLE EMPLOYEE;
-- 2. EMPLOYEE 테이블 생성
CREATE TABLE EMPLOYEE (
EMP_ID VARCHAR2(5) PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
DEPT_ID VARCHAR2(5) NOT NULL,
SALARY NUMBER(10) NOT NULL
);
-- 3. 데이터 삽입
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E001', '홍길동', 'D001', 5000);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E002', '김철수', 'D001', 5500);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E003', '이영희', 'D002', 4500);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E004', '박민수', 'D002', 6000);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E005', '정대현', 'D002', 5000);
-- 4. 변경사항 반영
COMMIT;
-- 4번 쿼리
WITH DEPT_AVG AS (
-- 1. 각 부서의 평균 연봉 계산
SELECT DEPT_ID, AVG(SALARY) AS AVG_SAL
FROM EMPLOYEE
GROUP BY DEPT_ID
)
SELECT E.*
FROM EMPLOYEE E
JOIN DEPT_AVG D ON E.DEPT_ID = D.DEPT_ID
WHERE E.SALARY > D.AVG_SAL -- 2. 부서 평균보다 높은 직원만 필터링
AND E.SALARY = (
-- 3. 필터링된 전체 직원 중에서 최소 연봉을 찾음
SELECT MIN(E2.SALARY)
FROM EMPLOYEE E2
JOIN DEPT_AVG D2 ON E2.DEPT_ID = D2.DEPT_ID
WHERE E2.SALARY > D2.AVG_SAL
);
-- 1번 쿼리
SELECT E.*
FROM EMPLOYEE E
WHERE E.SALARY > (
SELECT AVG(SALARY)
FROM EMPLOYEE
WHERE DEPT_ID = E.DEPT_ID
)
AND E.SALARY = (
SELECT MIN(SALARY)
FROM EMPLOYEE E2
WHERE E2.SALARY > (
SELECT AVG(SALARY)
FROM EMPLOYEE
WHERE DEPT_ID = E.DEPT_ID
)
);
/*
기대 결과:
EMP_ID | NAME | DEPT_ID | SALARY
-------|------|---------|-------
E002 | 김철수 | D001 | 5500
*/
0
안녕하세요, 인프런 AI 인턴입니다. kokodae.ko님.
SQL 문제에서 제시된 보기 1번이 왜 최적의 답안이 아닌지 궁금해하시네요. 일반적으로 SQL 쿼리를 평가할 때는 성능, 가독성, 유지보수성을 포함한 여러 가지 요소를 고려합니다.
1번 쿼리가 작동은 할 수 있지만, 답안으로는 부적합할 수 있는 주된 이유는 불필요하게 복잡하거나, 성능이 낮거나, 이해하기 어려운 방식으로 작성된 것일 수 있습니다. 이러한 요인은 특히 대량의 데이터를 처리할 때 성능 저하를 초래할 수 있거나, 코드의 유지보수성을 저해할 수 있습니다.
예를 들어, 쿼리 내에서 서브쿼리를 과도하게 사용하거나, 불필요한 조인(join)을 포함한 경우에는 쿼리 응답 시간이 길어질 수 있습니다. 또한, 쿼리가 복잡해질수록 팀원들이나 미래의 자신이 코드의 의도를 쉽게 이해하지 못할 수 있습니다.
이 문제에 대한 구체적인 경우와 이유는 강사님이 제공한 설명서를 참고하거나 직접 쿼리를 실행하면서 분석을 시도해보시면 도움이 될 것입니다.
비슷한 질문에 대한 해답은 다른 학습자 분들도 도움이 될 수 있습니다. 비슷한 문제에 대한 논의가 있었던 실전모의고사 질문 모음 링크를 참고하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
작업형 1 유형 부분
0
8
1
노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.
0
10
1
작업형 1 (삭제예정, 구 버전)
0
28
2
수강기간 연장 문의드립니다.
0
19
1
실전 모의고사 난이도
1
61
1
DIVIDE 인지 어떻게 판단할 수 있나요?
0
71
2
3강 노랭이 문제 SQL 실습 스크립트 다운로드 파일 오류
0
120
1
실전문제 2회차 24번문제
0
64
2
실전문제3회 41번문제
0
69
2
실전문제 3회차 18번
0
79
2
계층형 질의 질문입니다.
1
154
2
64번 설명에서
1
122
3
강한 식별자와 약한 식별자의 차이
1
58
2
실전 모의고사 2회차 8번 질문
0
61
2
실전 모의고사 1회 7번 질문
0
77
2
SQl 39번 문제 예시 부탁 드립니다.
0
170
2
SQl 39번 문제 예시 부탁 드립니다.
0
138
2
실전 문제 2회 질문
1
69
2
63번- PRIOR 자식 = 부모 형태 질문
1
514
2
도커 설치 중 질문
1
107
2
강의 자료 관련
1
120
2
DATA_FORMAT문제
1
123
3
노랑이 39P 15번문제
1
288
2
오타제보
1
153
1

