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 |
블로그의 정보
무작정 개발
무작정 개발