본문 바로가기
Programming/Database

[Database] JOIN 문제풀이

by 공부합시다홍아 2023. 12. 6.
 

[Database] JOIN

[Database] 기초 문제풀이 [Database] - Group 함수 (그룹함수) [Database] 함수 - 집합연산자와 분석함수 [Database] 여러 함수 [Database] 함수 : 숫자, 날짜 함수 그리고 변환 함수 [Database] 함수 : 문자형 [Database]

hong-study.tistory.com


연습문제 1번

EMPLOYEES 테이블과, DEPARTMENTS 테이블은 DEPARTMENT_ID로 연결되어 있습니다.
EMPLOYEES, DEPARTMENTS 테이블을 alias를 이용해서 각각 INNER , LEFT OUTER, RIGHT OUTER, FULL OUTER 조인 하세요. 
SELECT * FROM EMPLOYEES E JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
SELECT * FROM EMPLOYEES E LEFT JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
SELECT * FROM EMPLOYEES E RIGHT JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
SELECT * FROM EMPLOYEES E FULL JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;

연습문제 2번

EMPLOYEES, DEPARTMENTS 테이블을 INNER JOIN하세요

조건1 ) employee_id가 200인 사람의 이름, department_id를 출력하세요 OUTER 조인 하세요. 
조건2) 이름 컬럼은 first_name과 last_name을 합쳐서 출력합니다
SELECT CONCAT(FIRST_NAME,LAST_NAME) AS NAME,  
       D.DEPARTMENT_ID 
FROM EMPLOYEES E
JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE EMPLOYEE_ID = 200;

연습문제 3번

EEMPLOYEES, JOBS테이블을 INNER JOIN하세요.
조건) 모든 사원의 이름과 직무아이디, 직무 타이틀을 출력하고, 이름 기준으로 오름차순 정렬
SELECT FIRST_NAME, E.JOB_ID, MANAGER_ID 
FROM EMPLOYEES E
JOIN JOBS J 
ON E.JOB_ID = J.JOB_ID
ORDER BY FIRST_NAME ASC;

연습문제 4번

JOBS테이블과 JOB_HISTORY테이블을 LEFT_OUTER JOIN 하세요
SELECT * FROM JOBS J
LEFT JOIN JOB_HISTORY JH
ON J.JOB_ID = JH.JOB_ID;

연습문제 5번

Steven King의 부서명을 출력하세요
SELECT D.DEPARTMENT_NAME  
FROM EMPLOYEES E
JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE E.EMPLOYEE_ID = 100;

연습문제 6번

EMPLOYEES 테이블과 DEPARTMENTS 테이블을 Cartesian Product(Cross join)처리하세요.
SELECT * FROM EMPLOYEES CROSS JOIN DEPARTMENTS;

연습문제 7번

EMPLOYEES 테이블과 DEPARTMENTS 테이블의 부서번호를 조인하고 SA_MAN 사원만의 사원번호, 이름, 급여, 
부서명, 근무지를 출력하세요.
SELECT E.EMPLOYEE_ID, E.LAST_NAME, E.SALARY, E.DEPARTMENT_ID, L.CITY
FROM EMPLOYEES E
JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
JOIN LOCATIONS L
ON D.LOCATION_ID = L.LOCATION_ID
WHERE E.JOB_ID LIKE 'SA%';

연습문제 8번

EMPLOYEES ,  JOBS 테이블을 조인 지정하고 job_title이 'Stock Manager', 'Stock Clerk'인 직원 정보만 출력하세요
SELECT FIRST_NAME, E.JOB_ID, J.JOB_TITLE 
FROM EMPLOYEES E
JOIN JOBS J
ON E.JOB_ID = J.JOB_ID
WHERE J.JOB_TITLE LIKE ('Stock%');

연습문제 9번

DEPARTMENT 테이블에서 직원이 없는 부서를 찾아 출력하세요. 
SELECT E.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM DEPARTMENTS D
LEFT JOIN EMPLOYEES E
ON D.DEPARTMENT_ID = E.DEPARTMENT_ID
WHERE E.EMPLOYEE_ID IS NULL;

연습문제 10번

JOIN을 이용해서 사원의 이름과 그 사원의 매니저 이름을 출력하세요
SELECT E1.FIRST_NAME, E2.FIRST_NAME AS MANAGER_NAME 
FROM EMPLOYEES E1
LEFT JOIN EMPLOYEES E2
ON E1.MANAGER_ID = E2.EMPLOYEE_ID;

연습문제 11번

EMPLOYEES 테이블에서 left join하여 관리자(매니저)와, 매니저의 이름, 매니저의 급여 까지 출력하세요
매니저 아이디가 없는 사람은 배제하고 급여는 역순으로 출력하세요
SELECT E1.EMPLOYEE_ID, E1.FIRST_NAME, E2.EMPLOYEE_ID, E2.FIRST_NAME, E2.SALARY
FROM EMPLOYEES E1
LEFT JOIN EMPLOYEES E2
ON E1.MANAGER_ID = E2.EMPLOYEE_ID
WHERE E1.MANAGER_ID IS NOT NULL
ORDER BY E2.SALARY DESC;

연습문제 12번

윌리엄스미스의 계급도를 구하세요.
SELECT E3.FIRST_NAME || '>' || E2.FIRST_NAME || '>' || E1.FIRST_NAME
FROM EMPLOYEES E1
JOIN EMPLOYEES E2
ON E2.EMPLOYEE_ID = E1.MANAGER_ID
JOIN EMPLOYEES E3
ON E3.EMPLOYEE_ID = E2.MANAGER_ID
WHERE E1.FIRST_NAME = 'William' AND E1.LAST_NAME = 'Smith';
728x90

'Programming > Database' 카테고리의 다른 글

[Database] 서브쿼리 문제풀이  (0) 2023.12.07
[Database] 서브 쿼리  (0) 2023.12.07
[Database] JOIN  (0) 2023.12.06
[Database] 기초 문제풀이  (0) 2023.12.05
[Database] - Group 함수 (그룹함수)  (1) 2023.12.05