Database

[오라클DB] 연습문제2

웨일파도 2023. 3. 27. 17:12
반응형
--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