0829 DB 함수

yookyungmin·2022년 8월 29일
0

오늘의 함수

decode // 자바의 switch문, 대소비교 불가
case end // if문 기능이 많다 대소비교 가능

이전까지 배운것들은 단일함수

sum() : 전체 행에 대해 특정 컬럽의 전체 합을 반환하는 함수
avg() 전체 행에 대해 특정 컬럼의 전체 평균을 반환하는
count() 전체 행의 개수를 반환하는 함수(조건에 따라 null값은 counting 되지 않을수 있음)
max() 전체 행중에서 가장 큰값을 반환하는 함수
min() 전체 행중에서 가장 작은 값을 반환하는 함수

-GROUB BY (그룹화 데이터를 요청하는 문법)
--중복을 제거, Group by 가 사용되었을떄 그룹함수는 사용 가능
--총 급여합계 : select sum(salary) from employee;
--부서별 급여합계
--from >where> group by> having >select> order by 순서

--having
where절은 from에 조건이 붙는것 having은 group by 에 조건이 붙는것
select dept_code, floor(avg(salary)) from employee group by dept_code
having avg(Salary) >=3000000;

--join 중요중요
-- SQL
--ORACLE 전용문법
-- ANSI 표준문법
두개의상의 테이블에 연곤성 있는 데이트들을 분류하여 추려내어 새로우 가상 테이블로 생성하는 문법

--cross join 이중 FOR문과 유사
select from job, department; -- --ORACLE 전용문법
select
from job cross join department; -- ansi 표준, Cartesian product

--inner join, join만 써도 inner join
select emp_id, emp_name, dept_code, dept_title from employee
inner join department -- inner join은 on 으로 조건 필수
on employee.dept_code =dept_id; -- employee , department를 합치는데 on 조건하에~

select
emp_id,
emp_name,
dept_title
from employee inner join department on dept_code = dept_id;
-- dept_code가 null값인 사람의 경우 dept_id와 비교가 안되어 출력이 안되는데 이 경우 보완을 위해 outer join 이있다

-- left outer join, employee에서 null 값인 사람도 출력
select
emp_id,
emp_name,
dept_title
from employee left outer join department
on dept_code = dept_id;

--right outer join , department에서 출력이 안된 값을 출력
select
emp_id,
emp_name,
dept_title
from employee right outer join department
on dept_code = dept_id;

--full outer join, employee, department에서 출력되지 못한값 다 출력
select
emp_id,
emp_name,
dept_title
from employee full outer join department
on dept_code = dept_id;

--self join ex) manager_id 상사 찾아서 이름 옆에 붙이기
select e1.emp_id, e1.emp_name, e1.manager_id, e2.emp_Id, e2.emp_name from employee e1 inner join employee e2
on e1.manager_id = e2.emp_id;

--직원명, 부서명, 직급명을 출력하세요 // 테이블 3개 활용해서 inner join
select emp_id, emp_name, dept_title, job_name
from employee e join department d on dept_code = dept_id
join job j on e.job_code = j.job_code;

0개의 댓글