무작정 개발.Vlog

SQL 연습 문제 풀이 (3)

by 무작정 개발
반응형

1. EMP 테이블에서 인원수, 최대 급여, 최소 급여, 급여의 합을 계산하여 출력하는 SELECT 문장을 작성하여라.
SELECT COUNT(*),MAX(SAL), MIN(SAL), SUM(SAL) FROM EMP;
 

2. EMP 테이블에서 각 업무별로 최대 급여,최소 급여, 급여의 합을 출력하는 SELECT 문장을 작성하여라.
SELECT JOB, MAX(SAL), MIN(SAL), SUM(SAL) FROM EMP
GROUP BY JOB;
 

3. EMP 테이블에서 업무별 인원수를 구하여 출력하는 SELECT 문장을 작성하여라.
SELECT JOB, COUNT(*) FROM EMP GROUP BY JOB;
 

4. EMP 테이블에서 최고 급여와 최소 급여의 차이는 얼마인가 출력하는 SELECT 문장을 작성하여라.
SELECT MAX(SAL) - MIN(SAL) FROM EMP;
 

5. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(group by)

/*
H_YEAR  COUNT(*)  MIN(SAL)  MAX(SAL)  AVG(SAL)  SUM(SAL)

------ --------- --------- --------- --------- ---------

    81       10       950      5000    2282.5   22825

    82        1      1300      1300      1300      1300

    80        1       800       800       800       800
*/
 
SELECT TO_CHAR(HIREDATE,'YY') H_YEAR, COUNT(*), MIN(SAL), MAX(SAL), AVG(SAL), SUM(SAL)
FROM EMP GROUP BY TO_CHAR(HIREDATE,'YY');

6. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(case,sum,EXTRACT)

/*
    TOTAL      1980      1981      1982      1983

--------- --------- --------- --------- ---------

       12         1        10         1         0
 */


SELECT SUM(COUNT(*)) TOTAL,
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1980' THEN COUNT(*) END),0) "1980",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1981' THEN COUNT(*) END),0) "1981",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1982' THEN COUNT(*) END),0) "1982",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1983' THEN COUNT(*) END),0) "1983"
FROM EMP
GROUP BY HIREDATE;


SELECT SUM(COUNT(HIREDATE))TOTAL,
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1980' THEN COUNT(*) END),0) "1980",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1981' THEN COUNT(*) END),0) "1981",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1982' THEN COUNT(*) END),0) "1982",
NVL(SUM(CASE TO_CHAR(EXTRACT(YEAR FROM HIREDATE)) WHEN '1983' THEN COUNT(*) END),0) "1983"
FROM EMP
GROUP BY HIREDATE;


SELECT
COUNT(*) TOTAL,
SUM(CASE WHEN EXTRACT (YEAR FROM HIREDATE) = '1980' THEN '1' ELSE '0' END)"1980",
SUM(CASE WHEN EXTRACT (YEAR FROM HIREDATE) = '1981' THEN '1' ELSE '0' END)"1981",
SUM(CASE WHEN EXTRACT (YEAR FROM HIREDATE) = '1982' THEN '1' ELSE '0' END)"1982",
SUM(CASE WHEN EXTRACT (YEAR FROM HIREDATE) = '1983' THEN '1' ELSE '0' END)"1983"
FROM EMP;

--7. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(SUM, CASE, GROUP BY)

/*

JOB         Deptno 10    Deptno 20     Deptno 30     Total

---------   ---------    ---------     ---------     ---------

CLERK            1300         1900           950          4150

SALESMAN                                    5600          5600

PRESIDENT  5000                                     5000

MANAGER          2450         2975          2850          8275

ANALYST                       6000                        6000

*/
SELECT JOB,
SUM(CASE DEPTNO WHEN 10 THEN SAL END) "DEPTNO10",
SUM(CASE DEPTNO WHEN 20 THEN SAL END) "DEPTNO20",
SUM(CASE DEPTNO WHEN 30 THEN SAL END) "DEPTNO30",
SUM(SAL) Total
FROM EMP
GROUP BY JOB;

반응형

'DataBase > Oracle' 카테고리의 다른 글

[오라클] 제약 조건, View  (0) 2022.01.28
[오라클] DDL, DCL, ROLE  (0) 2022.01.27
SQL 연습 문제 풀이 (2)  (0) 2022.01.27
SQL 연습 문제 풀이 (1)  (0) 2022.01.27
[오라클] DML, TCL  (0) 2022.01.26

블로그의 정보

무작정 개발

무작정 개발

활동하기