«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 7 본문

개발일기/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;

여기서 어떻게 고칠지 몰랐지...