반응형
--3. EMP 테이블에서 가장 많은 사원을 갖는 MGR의 사원번호를 출력하라.
SELECT *
FROM (
SELECT MGR, COUNT(*) AS CNT
FROM EMP
GROUP BY MGR
ORDER BY CNT DESC
)
WHERE ROWNUM = 1;
-- 5. EMP 테이블에서 사원번호가 [7521인 사원의 직업과 같고] [사원번호가 7934인 사원의
-- 급여(SAL)보다 많은] 사원의 사원번호, 이름, 직업, 급여를 출력하라.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE JOB IN (
SELECT JOB
FROM EMP
WHERE EMPNO = '7521')
AND SAL > (
SELECT SAL
FROM EMP
WHERE EMPNO = '7934'
);
-- 6. 직업(JOB)별로 최소 급여를 받는 사원의 정보를 사원번호, 이름, 업무, 부서명을 출력하라.
SELECT E.EMPNO, E.ENAME, E.JOB, D.DNAME, E.SAL
FROM EMP E
INNER JOIN (
SELECT JOB, MIN(SAL)AS M
FROM EMP
GROUP BY JOB
) A ON A.JOB = E.JOB AND A.M = E.SAL
LEFT JOIN DEPT D ON E.DEPTNO = D.DEPTNO;
--------------
SELECT E.EMPNO, E.ENAME, E.JOB, D.DNAME, E.SAL
FROM EMP E
LEFT JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE (JOB, SAL) IN (
SELECT JOB, MIN(SAL)AS M
FROM EMP
GROUP BY JOB
)
ORDER BY JOB;
-- 7. 각 사원 별 커미션이 0 또는 NULL이고 부서위치가 ‘GO’로 끝나는 사원의 정보를
-- 사원번호, 사원이름, 커미션, 부서번호, 부서명, 부서위치를 출력하라.
-- 조건1. 보너스가 NULL이면 0으로 출력
SELECT E.EMPNO, E.ENAME, DECODE(E.COMM, NULL, '0') AS 커미션, D.DEPTNO, D.DNAME, D.LOC
FROM EMP E
LEFT JOIN DEPT D ON D.DEPTNO = E.DEPTNO
WHERE E.COMM IS NULL AND D.LOC LIKE '%GO';
-- 8. 각 부서 별 평균 급여가 2000 이상이면 초과, 그렇지 않으면 미만을 출력하라.
SELECT DEPTNO,
CASE WHEN (AVG(SAL) >= 2000) THEN '초과'
ELSE '미만'
END 평균연봉
FROM EMP
GROUP BY DEPTNO
ORDER BY DEPTNO;
SELECT * FROM EMP;
SELECT * FROM DEPT;
SELECT * FROM SALGRADE;
반응형
'Database' 카테고리의 다른 글
[오라클DB] TO_DATE 문제 (0) | 2023.03.28 |
---|---|
[오라클DB] SYSDATE, TO_CAHR (0) | 2023.03.27 |
[오라클DB] CASE & DECODE (1) | 2023.03.27 |
[오라클DB] SQL 쿼리 연습문제 (0) | 2023.03.27 |
[오라클DB 숙제] 3월 24일 실습문제1 (0) | 2023.03.24 |