정말 하다하다 안 풀려서 질문올려봅니다.
<employees>테이블에는 employee_id(PK), job_id, name, salary, department_id(FK)가 있고
<departments>테이블에는 department_id(PK)가 있습니다.
풀려는 문제는
스칼라 부속질의을 이용해서 모든 사원의 소속부서 평균연봉을 구한 다음,
결과로 name, job_id, salary, department_id, Department Avg Salary(소속부서 평균연봉)을 출력하라는 건데요
#문제 코드
select name, job_id, salary, e.department_id, (select round(avg(salary))
from departments d
where e.department_id = d.department_id
group by d.department_id) 'Department Avg Salary'
from employees e;
위 코드의 결과로 1행만 나옵니다. 값도 다르구요.
주질의와 부속질의를 따로 실행해보면 각각 값이 나오는데, 모든 사원이 안 나오는 이유가 뭘까요?
잘못된 부분을 설명해주시면 정말 감사하겠습니다.
되게 간단해보였는데 어제부터 못 풀었어요.
1. 글세요?
- 올려주신 쿼리는 서브쿼리 빼고 메인쿼리만 보면
- Where 절이 없으므로 모든사원이 나오는게 맞습니다. 1행만 나온다는게 말이 안됩니다.
2. 그리고
- 서브쿼리 비교 대상은 departments 가 아니라 employees 입니다.
SELECT name , job_id , salary , department_id , (SELECT ROUND(AVG(x.salary)) FROM employees x WHERE x.department_id = e.department_id ) "Department Avg Salary" FROM employees e ;