데이터베이스
24일차//[Oracle] SUB QUERY (1)
aesup
2021. 2. 15. 13:06
728x90
/*
SELECT
FROM
WHERE
*/
SELECT e.employee_id, e.first_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND e.employee_id = 103;
SELECT a.first_name, a.employee_id,
a.manager_id ,b.employee_id,
b.first_name
FROM employees a, employees b -- a는 사원 b는 상사
WHERE a.manager_id = b.manager_id;
--SUB QUERY
--QUERY안의 QUERY
--한개의 행( ROW) 에서 결과 값이 반환되는 QUERY
--RECORD ->한명의 데이터
/*
SELECT 단일 row 단일 column(산출되는 데이터는 한개 칼럼도 한개) -- 무조건 한개로 나와야된다.
FROM 다중ROW다중 COLUMN이 가능하다
WHERE 다중ROW다중 COLUMN이 가능하다
*/
SELECT first_name
FROM employees;
SELECT SUM(SALARY), AVG(salary) --두개이상의 칼럼을 뽑겠다는게 다중 컬럼이다
FROM employees;
SELECT SUM(SALARY)
FROM employees;
--select절
SELECT employee_id, first_name,
(SELECT first_name
FROM employees
WHERE employee_id = 100)
FROM employees;
--SELECT first_name,
--(SELECT SUM(SALARY) FROM employees)
---FROM employees;
--FROM절
SELECT employee_id, first_name, salary
FROM (SELECT employee_id, first_name, salary
FROM employees
WHERE department_id = 100)
WHERE salary > 8000;
--부서번호가 50번 급여가 6000이상인 사원
SELECT
*
FROM employees
WHERE department_id = 50
and salary >= 6000;
-- FROM 절을 사용
SELECT employee_id, salary, department_id
FROM ( SELECT employee_id, salary, department_id
FROM employees
WHERE department_id = 50)
WHERE salary >= 6000;
--급여의 합계와 ,인원수 ,사원명, 월급
SELECT job_id
FROM employees
GROUP BY job_id;
--급여의 합계와 ,인원수 ,사원명, 월급 FROM절 사용함
SELECT e.employee_id, e.salary,
e.job_id, j.job_id,
j."급여의 합계", j.인원수
FROM employees e, (SELECT job_id, SUM(salary) as "급여의 합계" ,count(*) as 인원수
FROM employees
GROUP BY job_id) j
WHERE e.job_id = j.job_id;
--where
--평균급여보다 많이 받는 사원
--평균급여를 섭 쿼리로
SELECT first_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
-- department_id = 90의 업무(job_id)를 산출하고싶다
SELECT job_id, first_name
FROM employees
WHERE department_id = 90;
SELECT job_id, first_name, salary
FROM employees
WHERE job_id IN( SELECT job_id
FROM employees
WHERE department_id = 90);
--부서별로 가장 급여를 적게 받는 사원과 같은 급여를 받는 사원
SELECT e.employee_id, e.first_name,e.last_name, e.salary, d.department_name
FROM employees e, departments d
WHERE salary = (SELECT MIN(salary) FROM employees);
SELECT employee_id, first_name, salary, department_id
FROM employees
WHERE salary IN (SELECT MIN(salary)
FROM employees
GROUP BY department_id);
--부서별로 가장 급여를 적게 받는 사원과 급여
SELECT department_id, first_name, salary
FROM employees
WHERE (department_id,salary) IN(SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id)
ORDER BY department_id;
SELECT
*
FROM departments;
SELECT
*
FROM employees;
728x90