* 실습은 앞의 SQL(2) 게시물에서 이용한 데이터베이스를 이용해 진행했다.
-- Q2. 서브쿼리를 이용하여 영업부인 직원들의 사원번호, 직원명, 부서코드, 급여를 출력하세요.
-- 참고. 영업부인 직원은 부서명에 ‘영업’이 포함된 직원임
SELECT emp_id, emp_name, dept_code, salary
FROM employee
WHERE dept_code IN (SELECT dept_id
FROM department
WHERE dept_title LIKE '%영업%' );
-- Q3. 서브쿼리와 JOIN을 이용하여 영업부인 직원들의 사원번호, 직원명, 부서명, 급여를 출력하세요.
SELECT a.emp_id, a.emp_name, b.dept_title, a.salary
FROM employee a
JOIN department b ON a.dept_code = b.dept_id
WHERE dept_code IN (SELECT dept_id
FROM department
WHERE dept_title LIKE '%영업%');
-- Q4. JOIN을 이용하여 부서의 부서코드, 부서명, 해당 부서가 위치한 지역명, 국가명을 추출하는 쿼리를 작성하고,
-- 이 쿼리를 서브쿼리로 활용하여 모든 직원의 사원번호, 직원명, 급여, 부서명, (부서의) 국가명을 출력하세요.
SELECT d.emp_id, d.emp_name, d.salary, e.dept_title, e.national_name
FROM employee d
JOIN (SELECT a.dept_id, a.dept_title, b.local_name, c.national_name
FROM department a
JOIN location b ON a.location_id = b.local_code
JOIN national c ON b.national_code = c.national_code) e
ORDER BY e.national_name;
-- Q5. 러시아에서 발발한 전쟁으로 인해 정신적 피해를 입은 직원들에게 위로금을 전달하려고 합니다.
-- 위로금은 각자의 급여에 해당 직원의 급여 등급에 해당하는 최소 금액을 더한 금액으로 정했습니다.
-- Q4에서 작성한 쿼리를 활용하여 해당 부서의 국가가 ‘러시아’인 직원들을 대상으로,
-- 직원의 사원번호, 직원명, 급여, 부서명, 국가명, 위로금을 출력하세요.단, 위로금 내림차순으로 출력되도록 하세요.
SELECT d.emp_id, d.emp_name, d.salary, e.dept_title, e.national_name, d.salary+f.min_sal AS 위로금
FROM employee d
JOIN (SELECT a.dept_id, a.dept_title, b.local_name, c.national_name
FROM department a
JOIN location b ON a.location_id = b.local_code
JOIN national c ON b.national_code = c.national_code) e
JOIN sal_grade f ON d.sal_level = f.sal_level
WHERE e.national_name = '러시아'
ORDER BY 위로금 DESC;
'CS > 데이터베이스' 카테고리의 다른 글
SQL(8) 숫자 관련 내장 함수 (0) | 2024.07.31 |
---|---|
SQL(7) 문자열 관련 내장 함수 (0) | 2024.07.31 |
SQL 실습(5) 중첩된 집계함수 에러, 인라인뷰 서브쿼리 에러 (3) | 2024.07.22 |
SQL 실습(4) (1) | 2024.07.21 |
SQL 실습(3) (0) | 2024.07.21 |