control Y

[오라클] JOIN 과제 본문

KH정보교육원/SQL

[오라클] JOIN 과제

ControlY 2023. 6. 19. 15:07

1. Sales 부서 소속 사원의 이름과 입사일을 출력하라.

SELECT FIRST_NAME, HIRE_DATE
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID  AND D.DEPARTMENT_NAME = 'Sales';

1 - 2. Sales 부서 소속 사원의 이름과 입사일을 출력하라(INNER JOIN)

SELECT FIRST_NAME, HIRE_DATE
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D
ON E. DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE DEPARTMENT_NAME = 'Sales';

 

2. 커미션을 받는 사원의 이름, 커미션 비율과 그가 속한 부서명을 출력하라.

 

SELECT FIRST_NAME, COMMISSION_PCT, DEPARTMENT_NAME
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE COMMISSION_PCT IS NOT NULL;

 

3. IT부서에서 근무하고 있는 사원번호, 이름, 업무, 부서명을 출력하라.

SELECT E.EMPLOYEE_ID, E.LAST_NAME, E.FIRST_NAME, E.JOB_ID, D.DEPARTMENT_NAME
FROM  DEPARTMENTS D INNER JOIN EMPLOYEES E
ON D.DEPARTMENT_ID = E.DEPARTMENT_ID
WHERE D.DEPARTMENT_NAME = 'IT';

4.  EMPLOYEES, DEPARTMENTS 테이블의 구조를 파악한 후 사원수가 5명 이상인 부서의 부서명과 사원수를 출력하시오.  이때 사원수가 많은 순으로 정렬하시오.

SELECT E.DEPARTMENT_ID, D.DEPARTMENT_NAME, COUNT(E.EMPLOYEE_ID)
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
GROUP BY D.DEPARTMENT_NAME, E.DEPARTMENT_ID
HAVING COUNT(EMPLOYEE_ID) > 5
ORDER BY COUNT(EMPLOYEE_ID) DESC;

4-2. 공통 칼럼이 있으면 ON 대신 USING으로 대체 가능

SELECT  D.DEPARTMENT_NAME, COUNT(E.EMPLOYEE_ID)
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D
USING(DEPARTMENT_ID)
GROUP BY D.DEPARTMENT_NAME
HAVING COUNT(EMPLOYEE_ID) >= 5
ORDER BY 2 DESC;
반응형