본문 바로가기

콩's EDUCATION/콩's DATABASE

서브쿼리 연습

-- 런던 지역에 근무하는 사원의 이름, 급여, 부서코드 조회

 

SELECT a.first_name, salary, a.department_id
FROM employees a, departments b
WHERE a.department_id = b.department_id
and b.location_id = (SELECT location_id
                  FROM locations
                  WHERE lower(city) = 'london');
               
select first_name
FROM employees
WHERE department_id = 40;

 

-- 자신의 상관이 kelly 인 사원의 이름과 급여 조회

 

SELECT first_name, salary
FROM employees
WHERE manager_id = (SELECT employee_id
                    FROM employees
                    WHERE lower(first_name) = 'adam');

 

-- 유럽 대륙에 근무하는 사원의 이름과 급여 조회

 

SELECT first_name, salary
FROM employees a, departments b, locations c, countries d
WHERE a.department_id = b.department_id
and b.location_id = c.location_id
and c.country_id = d.country_id
and d.region_id = (SELECT region_id
                  FROM regions
                  WHERE region_name ='Europe');

 

-- 사원들의 평균 급여보다 더 많은 급여를 받는 사원 이름, 급여 조회

 

SELECT first_name, salary
FROM employees
WHERE salary > (SELECT avg(salary)
                    FROM employees);

 

-- 부서별 이란 말이 있으면 Group by 가 들어간다.

-- 부서별 가장 많은 급여를 받는 사원 이름, 급여 조회

-- 다중행 서브 쿼리는 (동등)비교 연산자 사용하면 오류가 발생한다.

 

SELECT first_name, salary, department_id
FROM employees
WHERE (salary,department_id) in (SELECT max(salary),department_id
                    FROM employees
                    Group by department_id);

 

-- 50번 부서의 모든 사원들보다 많은 급여를 받는 사원의 이름, 급여 조회

 

SELECT first_name, salary
FROM employees
WHERE salary > all (SELECT salary
                FROM employees 
                WHERE department_id = 50);

 

-- 50번 부서의 사원중 어느 한 사원보다 많은 급여를 받는 사원의 이름, 급여 조회

 

SELECT first_name, salary
FROM employees
WHERE salary > any (SELECT salary
                FROM employees 
                WHERE department_id = 50);

 

-- 4월에 입사한 모든 입사자들의 급여보다 많이 받은 사원의 이름, 급여 조회

 

SELECT first_name, salary, hire_date
FROM employees
WHERE salary > all (SELECT salary
                    FROM employees
                    WHERE hire_date like '%/04/%');