개발일기/Oracle
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 7
민장미
2023. 5. 10. 19:32
오라클 학습용 계정 scott으로 접속~~
7 다중행 함수와 데이터 그룹화
연습문제 page 212
문제는 시간이 없는 고로 또 사진으로 올린다.
4번문제에서 딱 한번 gpt의 도움을 받았는데,
얘가 정신차렸는지 이번엔 맞는 해답을 줬다...
group by절에서 case문 똑같이 쓰면 되는 거였는데, 이게 된다는 생각을 못했네...
--PAGE 212
--1번 문제
SELECT DEPTNO,
TRUNC(AVG(NVL(SAL,0))) AS AVG_SAL,
MAX(SAL) AS MAX_SAL,
MIN(SAL) AS MIN_SAL,
COUNT(*) AS CNT
FROM EMP
GROUP BY DEPTNO
ORDER BY DEPTNO DESC;
--2번문제
SELECT JOB, COUNT(*)
FROM EMP
GROUP BY JOB
HAVING COUNT(*) >=3;
--3번문제 --의외로 간단했네..왜 헤맴
SELECT TO_CHAR(HIREDATE,'YYYY') AS HIRE_YEAR,
DEPTNO,
COUNT(*) AS CNT
FROM EMP
GROUP BY TO_CHAR(HIREDATE,'YYYY'),DEPTNO;
--4번문제
SELECT
CASE
WHEN COMM IS NULL THEN 'X'
WHEN COMM >=0 THEN 'O'
END AS EXIST_COMM,
COUNT(*) AS SNT
FROM EMP
GROUP BY
CASE
WHEN COMM IS NULL THEN 'X'
WHEN COMM >=0 THEN 'O'
END
ORDER BY COUNT(*) DESC;
----내가 썼던 답
SELECT
CASE
WHEN COMM IS NULL THEN 'X'
WHEN COMM >=0 THEN 'O'
END AS EXIST_COMM,
COUNT(*) AS SNT
FROM EMP
GROUP BY COMM
ORDER BY COUNT(*);
--5번문제
SELECT DEPTNO,
TO_CHAR(HIREDATE,'YYYY') AS HIRE_YEAR,
COUNT(*) AS CNT,
MAX(SAL) AS MAX_SAL,
SUM(SAL) AS SUM_SAL,
AVG(NVL(SAL,0)) AS AVG_SAL
FROM EMP
GROUP BY ROLLUP(DEPTNO,TO_CHAR(HIREDATE,'YYYY'))
ORDER BY DEPTNO;