작성
·
20
0
부서별 급여가 가장 높은 직원을 조회하는 SQL문 문제에서 보기중에 아래 2개가 동일한것 같은데 1번보기랑 3번보기랑 같은거 같은데 왜 답이 3번이예요? 1번 쿼리에 문제가있나요?
1. SELECT * FROM EMPLOYEE WHERE (DEPT_ID, SALARY) IN (SELECT DEPT_ID, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT_ID);
3.
SELECT * FROM EMPLOYEE E WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEE WHERE DEPT_ID = E.DEPT_ID)
답변 2
0
안녕하세요. 질문 주셔서 감사합니다.
내용 살펴봤습니다. 문제의 보기를 작성할 때 실수가 있었습니다. 18번 문제의 정답은 1, 3번이 모두 해당 하는 것이 맞습니다. 아래 AI 인턴이 남긴 답은 1, 3번 보기의 쿼리가 모두 중복 결과를 리턴하기 때문에 부정확합니다.
실수를 알려주셔서 감사드립니다. 참고로 아래에 쿼리 실습을 할 수 있도록 스크립트를 남깁니다. 문제는 업데이트 해서 다시 올려두었습니다. 감사드립니다.
-- EMPLOYEE 테이블 생성
CREATE TABLE EMPLOYEE (
EMP_ID INT PRIMARY KEY,
NAME VARCHAR(50),
DEPT_ID INT,
SALARY INT
);
-- 데이터 삽입
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (100, '김철수', 10, 5000);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (200, '이영희', 10, 4000);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (300, '박민수', 20, 4500);
INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (400, '최종호', 20, 5500);
-- 테이블 전체 확인 (선택 사항)
SELECT * FROM EMPLOYEE;
commit;
SELECT * FROM EMPLOYEE
WHERE (DEPT_ID, SALARY) IN (
-- 각 부서별 최대 급여와 부서 ID를 조회
SELECT DEPT_ID, MAX(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_ID
);
SELECT * FROM EMPLOYEE E
WHERE SALARY = (
-- 직원 E의 부서(E.DEPT_ID) 내에서 최대 급여를 조회
SELECT MAX(SALARY)
FROM EMPLOYEE
WHERE DEPT_ID = E.DEPT_ID
);
0
안녕하세요, 인프런 AI 인턴입니다. kokodae.ko님.
SQL 문제에서 부서별 급여가 가장 높은 직원을 조회하는 쿼리를 작성하면서 1번보기와 3번보기의 쿼리가 유사해 보일 수 있지만, 미묘한 차이점이 있을 수 있습니다. 두 쿼리를 간단히 살펴보면 다음과 같습니다:
첫 번째 쿼리:
SELECT * FROM EMPLOYEE WHERE (DEPT_ID, SALARY) IN (SELECT DEPT_ID, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT_ID);
(DEPT_ID, SALARY)
형태로 묶인 값들이 부서별 최대 급여 목록에 있는지 확인하고 있습니다.세 번째 쿼리:
SELECT * FROM EMPLOYEE E WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEE WHERE DEPT_ID = E.DEPT_ID)
3번 쿼리가 더 명확히 각 부서별 최대 급여를 가진 직원을 찾는 데 유리할 수 있습니다. 첫 번째 쿼리가 잘못된 것은 아니지만, IN
절을 사용함으로써 결과가 같은 부서의 여러 직원끼리 동일한 급여를 받을 때 중복 결과를 방지하기 어렵다는 점을 떠올릴 수 있습니다. 따라서, 우리는 이러한 관점에서 3번 쿼리가 조금 더 직관적으로 이해되고 실행될 수 있습니다.
비슷한 문제 및 답변에 대한 더 많은 정보를 원한다면, 다음 링크를 참고하세요: 부서별 최대 급여 조회 SQL 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.