Database

[오라클DB] SQL 쿼리 연습문제

웨일파도 2023. 3. 27. 16:32
반응형

 

--1. 급여가 많은 순으로 출력하기
SELECT *
FROM EMP
ORDER BY SAL DESC;

--2. 각 부서의 사람 수 구하기
SELECT DEPTNO, COUNT(*)
FROM EMP
GROUP BY DEPTNO;

--3. salesman의 평균 급여 구하기
SELECT AVG(SAL)
FROM EMP
WHERE JOB = 'SALESMAN';


--4. 커미션(COMM)을 받는 사람의 수 구하기
SELECT COUNT(*)
FROM EMP
WHERE COMM IS NOT NULL;

--5. 커미션(COMM)을 받는 사람들의 커미션 평균 하기
SELECT AVG(COMM)
FROM EMP
WHERE COMM IS NOT NULL;

--6.사원번호가 77로 시작하는 사람 구하기
SELECT ENAME
FROM EMP
WHERE EMPNO LIKE '77%';

--7. 부서 인원이 가장 적은 곳의 위치 구하기
SELECT LOC
FROM DEPT
WHERE DEPTNO IN (
                    SELECT DEPTNO
                    FROM (
                            SELECT DEPTNO, COUNT(*)AS CNT
                            FROM EMP
                            GROUP BY DEPTNO
                            ORDER BY CNT
                            )
                    WHERE ROWNUM = 1
                 );
                 
--8. 본인의 상사가 'BLAKE'인 사람 구하기
SELECT *
FROM EMP E
INNER JOIN EMP E2 ON E.MGR = E2.EMPNO
WHERE E2.ENAME = 'BLAKE';

--9. KING을 상사로 두고 있는 사람 구하기
SELECT *
FROM EMP E
INNER JOIN EMP E2 ON E.MGR = E2.EMPNO
WHERE E2.ENAME = 'KING';

--10. SALEMAN이 가장 많은 부서의 지역 구하기
SELECT LOC
FROM DEPT
WHERE DEPTNO IN (
                    SELECT DEPTNO
                    FROM (
                            SELECT DEPTNO, COUNT(*) AS A
                            FROM EMP
                            WHERE JOB = 'SALESMAN'
                            GROUP BY DEPTNO
                            ORDER BY A DESC
                            )
                    WHERE ROWNUM = 1
                    );
                    
--11. 전체 평균보다 높은 급여를 받는 사람들 구하기
SELECT *
FROM EMP
WHERE SAL > (SELECT AVG(SAL)
             FROM EMP);

--12. 부서 평균 급여가 가장 적은 곳의 위치 구하기
SELECT LOC
FROM DEPT
WHERE DEPTNO IN (
                    SELECT DEPTNO
                    FROM (
                            SELECT DEPTNO, AVG(SAL)AS A
                            FROM EMP
                            GROUP BY DEPTNO
                            ORDER BY A)
                    WHERE ROWNUM = 1
                    );

--13.각 사람들의 급여 등급 
SELECT E.*, S.GRADE
FROM EMP E
INNER JOIN SALGRADE S ON E.SAL BETWEEN S.LOSAL AND S.HISAL;

SELECT * FROM EMP;
SELECT * FROM DEPT;
SELECT * FROM SALGRADE;
반응형

'Database' 카테고리의 다른 글

[오라클DB] 연습문제2  (0) 2023.03.27
[오라클DB] CASE & DECODE  (1) 2023.03.27
[오라클DB 숙제] 3월 24일 실습문제1  (0) 2023.03.24
[MySQL] 로그인하기 - DB & 자바 연결  (0) 2023.03.23
[오라클DB] 문자 함수  (0) 2023.03.23