클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

다중행 함수와 데이터 그룹화 4 - 단원 마무리 연습문제 풀기 본문

알고리즘 및 자료 관리/데이터베이스

다중행 함수와 데이터 그룹화 4 - 단원 마무리 연습문제 풀기

huenuri 2024. 8. 21. 17:17

이제 7장의 마지막 관문인 연습문제를 푸는 일이 남아있다. 가능하면 1시간 안에 학습을 마치고 11시부터는 자바 공부를 해볼 생각이다. 문제는 총 5문제인데 과연 내가 풀 수 있을지 의문이 들기도 하지만 한번 풀어볼 것이다.

 

학습 목표

  1. 7장에서 배운 연습문제를 모두 풀어보자!
  2. 아직 충분한 문제를 풀어보지 못해 어렵게 느껴지더라도 가능하면 스스로 푸는 연습을 하자!

학습 시간

밤 10시 10분 ~ 11시 반 <1시간 20분 소요>


 

 

 

단원 마무리 연습문제 풀기

 

문제 1번

 

소숫점이 너무 많이 출력이 되고 있었다. 이 부분을 아무리 찾아봐도 모르겠기에 정답을 참고했다.

 

평균을 구하는 게 메인이니 가장 먼저 써야 한다고 생각했는데 아니었다. 버리는 함수를 먼저 쓰고 그것이 무엇인지 괄호에 넣어주는 거였다. 별로 어렵지 않은 문제라고 생각했는데 20분도 넘게 걸렸다.


 

 

 

문제 2번

 

그룹 함수가 허용되지 않는다고 문구가 뜬다.

 

특정 사람들을 출력해야 하니 이들을 그룹으로 묶고 WHERE 대신 HAVING절을 사용해야 한다. 공부를 한 효과가 있었다. 아침에는 GROUP BY도 이해하지 못했는데 이제는 잘 사용할 수 있게 되었다.


 

 

 

문제 3번

이 문제는 모르는 부분이 많아서 정답을 보면서 풀었다. 그래도 어떻게 적용이 되는지 이해한 후에 문제를 생각하면서 풀어보았다. 6장에서 형변환이 참 어려웠는데 여전히 잘 적용하지 못하고 있었다.
아마도 난 프로그래밍을 할 때도 형 변환을 하는 걸 무척 어려워했었다. 여기서도 이런 부분이 잘 나타나는 걸 느꼈다.

년도를 나타낼 표현식을 뒤에 붙여주고, 형변환을 한 후 괄호 안에 어떤 것을 할지 써주어야 한다. 난 괄호에 무엇을 넣어야 하는지 몰라 몇 번이나 틀렸다가 다시 시도했다.
그리고 이 모든 과정을 마친 후에는 그룹화를 하는 걸 잊지 말자!


 

 

 

문제 4번

 

이번에도 문제를 또 틀렸다. 지난번 Chapter부터는 한 문제도 맞추기가 어려워졌다. 난 모르는 건 확실히 틀리는 게 더 좋다는 주의라 어설프게 정답을 맞추려고 노력하지는 않는다.

 

 

딱 한 가지에서 틀린 부분이 있었다. 다른 건 모두 잘했는데 아직 그룹화에 대한 개념이 잘 정립되어 있지 않는 것 같다. 모든 것을 그룹으로 만들 수 있었다. 난 이런 NULL 처리 함수도 그룹으로 묶을 수 있는지 의구심이 들어 좀더 안전한 방법으로 COUNT 함수로 묶은 것을 사용했는데 그건 아니었다.
이제 그룹화에 대해서 문제를 풀기 전보다 훨씬 더 이해가 되었다.


 

 

 

문제 5번

 

지금까지 푼 문제 중에서 가장 어려운 문제인데, 소계와 총계를 어떻게 합산하는지 적용이 잘 되지 않았다. ROLLUP 함수를 사용하면 될 것 같은데 아닌가보다.

 

 

대부분 맞게 잘 했는데, 한두군데가 틀린 곳이 있었다. ROLLUP 함수를 쓸 때 DEPTNO와 HIREDATE를 사용하는 건 맞지만 형 변환을 한 그룹화 그대로 써야 했다.
두번째는 평균을 구할 때 소계와 합계에서 소수점 자리가 제대로 나오려면 TRUNC를 해주면 안되었다. 버림이 되니 당연히 소계에서도 소수가 출력되지 않는 거였다.

이 외에는 아주 잘 풀었다. 어려운 문제였는데 시간을 투자해서 열심히 풀고 나니 정말 뿌듯하고 기뻤다.


 

 

 

학습을 마치고

틀린 코드도 모두 붙여넣으며 왜 틀렸는지 분석하는 과정이 문제를 맞추는 것보다 더 중요하다는 것을 알게 되었다. 앞으로도 이런 식으로 공부를 해나갈 것이다.
얼마나 문제를 잘 맞추는지는 사실 중요하지 않다. 개념을 모르면서 대충 때려 맞추는 건 자신의 실력에 하나도 도움이 되지 않기 때문이다. 오히려 많이 실수하고 시행착오를 겪어어 다음에 비슷한 문제가 나왔을 때 잘 풀 수 있고 응용력도 생긴다.

조인은 내일 공부해야 할 것 같다.