안녕하세요
sql 문제풀다 질문드립니다
Q. 자신의 매니저보다 연봉(salary)를 많이 받는 직원들의 성(last_name)과 연봉(salary)를 출 력하시오.
SELECT
e.LAST_NAME, e.SALARY
FROM EMPLOYEES e, EMPLOYEES m
WHERE e.MANAGER_ID = m.EMPLOYEE_ID
AND e.SALARY > m.SALARY;
위 셀프조인 쿼리에서 매니저의 급여와 직원들의 급여를 구분하는 기준이있을까요?
제생각엔 같은 employee 테이블이지만
조인조건에서 e.manager_id 를 사용했으니 e 테이블이 매니저 급여를 나타내고
문제에서 요청한대로 e.salary < m.salary
매니저의 급여가 더낮은 조건을 걸어야하는게 아닌가싶은데요 ㅜㅜ
답변주시면 감사하겠습니다~!!
-- 한번에 풀지 마시고 하나씩 조건에 맞춰서 풀어보세요. -- 데이터를 보시면서 푸시면 더 편합니다. WITH EMPLOYEES ( EMPLOYEE_ID , LAST_NAME , JOB ,MANAGER_ID , SALARY , DEPT_NO ) AS ( SELECT '7369', 'SMITH', 'CLERK', '7902', '800', '20' FROM DUAL UNION ALL SELECT '7499', 'ALLEN', 'SALESMAN', '7698', '1600', '30' FROM DUAL UNION ALL SELECT '7566', 'JONES', 'MANAGER', '7839', '2975', '20' FROM DUAL UNION ALL SELECT '7654', 'MARTIN', 'SALESMAN', '7698', '1250', '30' FROM DUAL UNION ALL SELECT '7698', 'BLAKE', 'MANAGER', '7839', '2850', '30' FROM DUAL UNION ALL SELECT '7782', 'CLARK', 'MANAGER', '7839', '2450', '10' FROM DUAL UNION ALL SELECT '7788', 'SCOTT', 'ANALYST', '7566', '3000', '20' FROM DUAL UNION ALL SELECT '7839', 'KING', 'PRESIDENT', '', '5000', '10' FROM DUAL UNION ALL SELECT '7844', 'TURNER', 'SALESMAN', '7698', '1500', '30' FROM DUAL UNION ALL SELECT '7876', 'ADAMS', 'CLERK', '7788', '1100', '20' FROM DUAL UNION ALL SELECT '7900', 'JAMES', 'CLERK', '7698', '950', '30' FROM DUAL UNION ALL SELECT '7902', 'FORD', 'ANALYST', '7566', '3000', '20' FROM DUAL UNION ALL SELECT '7934', 'MILLER', 'CLERK', '7782', '1300', '10' FROM DUAL ) /* Q. 자신의 매니저보다 연봉(salary)를 많이 받는 직원들의 성(last_name)과 연봉(salary)를 출 력하시오. */ -- 1. 자신의 매니저를 구한다 SELECT e.EMPLOYEE_ID AS EMP , e.LAST_NAME AS EMP_NM , e.SALARY AS EMP_SALARY , m.EMPLOYEE_ID AS MGR , m.LAST_NAME AS MGR_NM , m.SALARY AS MGR_SALARY FROM EMPLOYEES e -- EMP , EMPLOYEES m -- MGR WHERE e.MANAGER_ID = m.EMPLOYEE_ID -- 2. 자신의 매니저보다 많이 받는 직원을 구한다. SELECT e.EMPLOYEE_ID AS EMP , e.LAST_NAME AS EMP_NM , e.SALARY AS EMP_SALARY , m.EMPLOYEE_ID AS MGR , m.LAST_NAME AS MGR_NM , m.SALARY AS MGR_SALARY FROM EMPLOYEES e -- EMP , EMPLOYEES m -- MGR WHERE e.MANAGER_ID = m.EMPLOYEE_ID AND e.SALARY > m.SALARY -- 매니저의 연봉보다 많는경우