'STUDY/ORACLE_SQL_2일차'에 해당되는 글 7건

  1. 2007.06.22 7. 부서별 평균 급여보다 적게 받는 사원
  2. 2007.06.22 6. 직무별로 최대 급여를 받는 사원의 정보
  3. 2007.06.22 5. 평균 급여보다 많이 받는 사원의 수
  4. 2007.06.22 4. 사원 자신의 매니저 정보
  5. 2007.06.22 3. 지역별로 소속되어 있는 사원 수의 합
  6. 2007.06.22 2. 사원 'SEO JOHN'의 직무와 정보
  7. 2007.06.22 1. 사원 'SEO JOHN'의 정보를 얻자

7. 부서별 평균 급여보다 적게 받는 사원

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:50

부서별 평균 급여보다 적게 받는 사원은 누구?

1.부서별 평균급여

SELECT department_name, AVG(salary)
FROM departments d JOIN employees e
ON d.department_id = e.department_id
GROUP BY department_name

2. 1번을 테이블로 생각하여 접근

SELECT *
FROM
 (SELECT department_name, AVG(salary)
 FROM departments d JOIN employees e
 ON d.department_id = e.department_id
 GROUP BY department_name) dept_avgsal


 

SELECT employee_id, last_name, department_name, salary
FROM departments d JOIN employees e
ON d.department_id = e.department_id
JOIN  (SELECT department_name, AVG(salary) avgsal
 FROM departments d JOIN employees e
 ON d.department_id = e.department_id
 GROUP BY department_name) dept_avgsal
ON d.department_name = dept_avgsal.department_name
WHERE dept_avgsal.avgsal > salary
:

6. 직무별로 최대 급여를 받는 사원의 정보

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:48

직무별로 최대 급여를 받는 사원의 정보를 얻어 보자.

사번 사원이름 직무 급여

1) 직무별로 최대 급여가 얼마냐?

SELECT job_title, MAX(salary)
FROM employees e JOIN jobs j
ON e.job_id = j.job_id
GROUP BY job_title;

2) 해당 직무에 최대 급여를 받는 사원은 누구?

SELECT job_title, employee_id
FROM employees e JOIN jobs j
ON e.job_id = j.job_id
WHERE (job_title, salary) IN
 (SELECT job_title, MAX(salary)
 FROM employees e JOIN jobs j
 ON e.job_id = j.job_id
 GROUP BY job_title)
:

5. 평균 급여보다 많이 받는 사원의 수

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:47

평균 급여보다 많이 받는 사원의 수는 몇 명인가?

1) 사원의 평균 급여를 얻는다.

SELECT AVG(salary)
FROM employees;

6461.68224 

2) 평균 급여보다 많이 받는 사원의 수를 얻는다.

SELECT COUNT(employee_id)
FROM employees
WHERE salary > 6461.68224;

SELECT COUNT(employee_id)
FROM employees
WHERE salary >
 (SELECT AVG(salary)
  FROM employees)

:

4. 사원 자신의 매니저 정보

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:45

사원 자신의 매니저 정보를 얻자.

사번 사원이름 매니저이름

SELECT e.employee_id, e.last_name, m.last_name
FROM employees e JOIN employees m
ON e.manager_id = m.employee_id;

:

3. 지역별로 소속되어 있는 사원 수의 합

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:43

지역별로 소속되어 있는 사원 수의 합을 나타내자.

결과

지역   사원 수
Europe
Americas
Asia
Middle East and Africa


 

SELECT region_name, COUNT(employee_id)
FROM employees e JOIN departments d
ON e.department_id = d.department_id
JOIN locations l
ON l.location_id = d.location_id
JOIN countries c
ON c.country_id = l.country_id
JOIN regions r
ON r.region_id = c.region_id
GROUP BY region_name;

SELECT region_name, COUNT(employee_id)
FROM employees e JOIN departments d
ON e.department_id = d.department_id
JOIN locations l
ON l.location_id = d.location_id
JOIN countries c
ON c.country_id = l.country_id
RIGHT OUTER JOIN regions r
ON r.region_id = c.region_id
GROUP BY region_name;


 

:

2. 사원 'SEO JOHN'의 직무와 정보

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:40

사원 'SEO JOHN'의 직무는 무엇인가?

SELECT job_title
FROM employees e JOIN jobs j
ON e.job_id = j.job_id
WHERE UPPER(last_name) = 'SEO'
AND UPPER(first_name) = 'JOHN';


사원 'SEO JOHN'의 정보를 얻자.

사번 사원이름 부서이름 직무이름

SELECT employee_id, last_name, department_name, job_title
FROM jobs j JOIN employees e
ON j.job_id = e.job_id
JOIN departments d
ON d.department_id = e.department_id
WHERE UPPER(last_name) = 'SEO'
AND UPPER(first_name) = 'JOHN';

:

1. 사원 'SEO JOHN'의 정보를 얻자

STUDY/ORACLE_SQL_2일차 2007. 6. 22. 13:33

사원 'SEO JOHN'의 정보를 얻자

사원, 사원이름, 부서이름

1) 사원 테이블로부터 사번, 사원이름, 부서 아이디를 얻는다.

SELECT employee_id, last_name, department_id
FROM employees
WHERE UPPER(last_name) = 'SEO'
AND UPPER(first_name) = 'JOHN'

2) 사원 테이블의 부서 아이디를 참고하여
   부서 테이블로부터 부서 이름을 얻는다.

SELECT department_name
FROM departments
WHERE department_id = 50

두개를 합하면

SELECT employee_id, last_name, department_name
FROM employees, departments
WHERE UPPER(last_name) = 'SEO'
AND UPPER(first_name) = 'JOHN'
AND employess.department_id = departments.department_id;

join 으로 다듬기 (가독성 향상)

SELECT employee_id, last_name, department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id
WHERE UPPER(last_name) = 'SEO'
AND UPPER(first_name) = 'JOHN';

: