급여 최저치 문제
217
投稿した質問数 1
안녕하세요 선생님,
좋은 강의 보여주셔서 감사합니다. 다름이 아니라 23강에서 문제 풀이 도중 이해가 안 가는 부분이 있어서 이렇게 여쭙습니다.
<문제>
-- 각 부서별 급여 최저치보다 더 많이 받는 사원들의 사원번호, 이름, 급여를 가져온다.
<선생님 풀이>
select empno, ename, sal
from emp
where sal > all (select min(sal) from emp group by deptno);
이렇게 진행되면 각 부서별 최저치에서 가장 높은 급여와 비교되는 것이 아닌가 싶어 질문드립니다. 총 인원이 14명인 경우 가장 최저치를 받는 사람들 3명(부서가 3개)을 제외하면 11명이 나와야 할 듯한데 선생님 답에서는 8명만 나와서요...
回答 1
0
안녕하세요, 인프런 AI 인턴입니다.
Jaeyoung님, 질문해 주셔서 감사합니다.
선생님의 쿼리는 ‘ALL’ 키워드를 사용하여 각 부서별로 최저 급여보다 더 많이 받는 사원들을 찾는 방식입니다. ‘ALL’은 서브쿼리의 결과로 나온 모든 값을 조건 비교에 사용하므로, 각 부서별 최저 급여 중 하나라도 초과하는 급여를 받는 모든 사원을 가져올 것입니다. 다만, 이 논리는 각각의 부서별로 그 부서의 최저 급여보다 높은 급여를 받는 직원들을 선택합니다. 올바른 결과를 얻기 위해서는 각 부서별로 비교를 달리 해야 합니다.
현재 결과가 예상과 다른 것은 쿼리에 문제가 있을 수 있다는 의미일 수 있습니다. 부서별로 최저 급여보다 높은 급여를 받는 사원의 수를 정확히 확인하려면 서브쿼리에서 각 부서의 최저 급여 데이터를 부서별로 제대로 비교하고 있는지 확인해야 합니다. 예를 들어, 다음과 같은 쿼리는 각 부서별 최저 급여와 직원의 급여를 비교하여 정확한 결과를 가져올 수 있습니다.
SELECT e.empno, e.ename, e.sal
FROM emp e
WHERE e.sal > (SELECT MIN(sal) FROM emp WHERE deptno = e.deptno);
이 쿼리는 각 사원의 급여가 그 사원이 속한 부서의 최저 급여보다 높은지를 비교합니다. 만약 선생님 답변에 혼란이 있었다면, 위 쿼리를 참고하여 다시 한번 실행해 보시길 바랍니다.
프로그래밍에 관련된 추가 질문이 있으시면 언제든지 문의해 주세요.
XE 21C 버전 다운받아 사용중인데, 저 테이블들이 없습니다..
0
199
2
join 에 in을 사용할때.
0
267
1
강의 9:15 초 커미션을 받는 사원 이요
0
300
1
16강 마지막 문제 질문
0
395
2
37강 사용자 계정 만들고 추가할 때 오류 발생
0
241
1
PTT 파일
0
409
1
기본 학습 테이블
1
392
1
제약조건 에러 ORA-02270
0
588
1
25강 마지막 문제
0
584
3
오라클 설치 마지막에 비밀번호 설정 시 무한로딩
0
558
1
기본제공되는 테이블 질문
0
564
2
25강 마지막 문제 DALLAS에 근무 하는 조건은 안넣으셨네요
0
354
1
Oracle 설치 관련 여쭤봅니다.
0
354
1
설치 중 Error 발생
0
574
1
왜 제 질문만 무시하시는지 이유가 궁금하네요
0
418
1
블로그
0
330
1
설치가 안됩니다
0
377
0
join 학습 문의
0
272
1
안녕하세요 설치관련 질문입니다.
0
272
1
안녕하세요 서브쿼리 수업중 질문있습니다.
0
200
1
안녕하세요 수업 너무 유익하게 듣고있는 학생입니다.
0
234
1
안녕하세요 2강 오라클 설치질문있습니다
0
352
1
ora-28000 the account is locked 에러 질문 드립니다.
0
624
1
프로시저
1
435
1

