내용

글번호 1171
작성자 heojk
작성일 2022-12-18 15:28:03
제목 2022-12-18 2일차
내용 -- 103번 사원의 이름과 부서 이름을 출력하세요. select first_name, employees.department_id, department_name from employees, departments where employee_id=103 and employees.department_id=departments.department_id ; -- 103번 사원의 이름과 매니저의 이름을 출력하세요. -- 사원의 정보는 employees, 매니저 정보는... employees에 있음 -- 같은 테이블에서 조인을 셀프조인이라고 합니다. -- 테이블 별칭이 반드시 필요함 -- 열을 지정할 때 별칭을 이용해서 지정 SELECT emp.first_name, emp.manager_id, man.first_name FROM employees emp, employees man WHERE emp.manager_id=man.employee_id and emp.employee_id=103 ; select * from departments; -- 모든 사원의 이름과 부서번호, 부서이름을 출력하세요 select first_name, d.department_id, department_name from employees e, departments d where e.department_id(+)=d.department_id ; select employee_id, department_name from employees cross join departments; -- 두 테이블이 같은 열 이름으로 조인이 되어 있을 경우 select employee_id, job_id, job_title from employees natural join jobs; select employee_id, department_name from employees natural join departments; -- 같은 이름의 열이 2개 이상 있을 경우 조인 열을 지정 select employee_id, department_name from employees join departments using(department_id); using(department_id); -- 직접 조인 조건을 지정하려면... select employee_id, department_name from employees join departments on employees.department_id=departments.department_id; -- self join select e.first_name as 사원이름, m.first_name as 매니저이름 from employees e join employees m on e.manager_id=m.employee_id; -- * 60번 부서가 있는 지역의 우편번호를 출력하세요. select department_id, postal_code from departments, locations where department_id=60 and departments.location_id=locations.location_id; select department_id, postal_code from departments natural join locations where department_id=60; select department_id, postal_code from departments join locations on departments.location_id=locations.location_id where department_id=60; -- 모든 사원의 이름, 부서이름, 우편번호를 출력하세요. select first_name, department_name, postal_code from employees e join departments d on e.department_id=d.department_id join locations l on d.location_id=l.location_id; -- 계층형 쿼리 SELECT employee_id, lpad(' ', 3*(level-1)) || first_name, level from employees start with manager_id is null connect by prior employee_id = manager_id order siblings by first_name; -- select department_id from ( select department_id, stddev(salary) as sd_sal from employees group by department_id order by sd_sal desc ) where rownum=1 ; -- 실습 -- Steven King 사원이 입사한지 500일째 되는 날짜는? SELECT hire_date+500 from employees where first_name='Steven' and last_name='King'; -- 부서 번호가 20, 30, 40에 속하는 사원의 이름은? select first_name from employees where department_id in (20, 30, 40); -- 직무 아이디가 IT_PROG이거나 AD_VP인 사원중 급여가 7000 이상인 사원의 이름은? select first_name from employees where (job_id='IT_PROG' or job_id='AD_VP') and salary >= 7000; -- 50번 부서가 있는 지역의 우편번호는? select postal_code from departments d join locations l on d.location_id=l.location_id where department_id=50; -- 급여의 편차가 가장 작은 부서의 번호를 출력하세요. select department_id from ( select department_id, stddev(salary) as sd_sal from employees group by department_id order by sd_sal) where rownum=1 ; -- Lex 사원의 급여를 10% 인상한 금액은? select salary*1.1 from employees where first_name='Lex'; -- IT 직무에 해당하지 않는 사원은? select first_name from employees where job_id not like 'IT%'; -- 12월 입사자의 직무는? select job_id from employees where hire_date like '%/12/%'; -- 보너스가 없는 사원은 몇명? select count(*) from employees where commission_pct is null; --72 select count(*) from employees where commission_pct = null; --0 select count(*) from employees where commission_pct <> null; --0 select count(*) from employees where commission_pct in (null); --0 -- 급여를 가장 많이 받이 받는 사람의 이름은? select first_name from employees where salary = (select max(salary) from employees); -- 102번 사원이 근무하는 부서의 이름은? select department_name from employees e join departments d on e.department_id=d.department_id where e.employee_id=102; -- 매니저 직무인 사원은? select first_name from employees where job_id like '%MAN'; -- 105번 사원의 상사는? select employee_id, first_name from employees start with employee_id=105 connect by prior manager_id=employee_id; -- ROWNUM 의사열은 반드시 첫번째 항목부터 조회해야 합니다. -- where rownum between 10 and 20 이 조건은 검색이 안됩니다. -- 50번 부서의 사원 중에서 50번 부서의 급여 평균보다 더 많은 급여를 받는 사원의 이름은? select first_name from employees where salary > (select avg(salary) from employees where department_id=80) and department_id=80 ; -- unique 제약조건은 널이 가능합니다.그런데 널의 개수는 여러개 가능합니다.