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

SQL문 속 또 다른 SQL문, 서브쿼리 3 - 단원 마무리 연습문제 풀기 본문

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

SQL문 속 또 다른 SQL문, 서브쿼리 3 - 단원 마무리 연습문제 풀기

huenuri 2024. 8. 21. 17:35
오늘은 어제보다 30분 늦은 4시 반에 일어나 하루를 시작해본다. 어제 풀지 못했던 단원 마무리 문제를 풀고 오늘은 팀 프로젝트 과제를 수행하려고 한다. 아직 난 프로젝트의 별다른 흥미를 느끼지 못해 팀에서 가장 열심히 하지 않는 팀원인 것 같다.
그래도 오늘 요구 명세서을 쓰며 프로젝트에 좀더 관심을 갖길 바라는 마음이다. 어제 지난 기수 선배들의 작업물 책자를 읽어보기도 했다.
 
 
이제 공부를 바로 시작해보자.

 

학습 내용

서브쿼리 연습문제 4문제를 풀어본다.

학습 시간

새벽 4시 반 ~ 5시 40분 <1시간 10분 소요>



 

단원 마무리 연습문제 풀기

 

문제 1번

 

서브 쿼리를 어떻게 넣는지 아직 잘 모르겠어서 여기까지밖에 풀지 못했다. 출력을 하니 하나도 되지 않았다.

 

정답을 보니 서브쿼리문을 JOB으로 설정해서 그냥 쓰면 되는 거였다.



 

 

문제 2번

문제가 많이 어려워서 답을 보면서 풀어보았다. 2번 문제에서는 1번과 달리 WHERE절이 서브쿼리에서 왜 필요가 없는지 의문이 들었다. 어떤 하나의 조건은 필요 없고 SAL이 평균보다 클 때만 구하면 되니까 그런 것 같기도 하다. ORDER BY도 지난 장에서 배웠는데 모두 잊어버렸다.

아무튼 여러번 복습하고 문제를 스스로 풀어봐야 실력이 늘텐데 그럴 시간이 많지 않아 그냥 문제를 한번 읽고 이해하고 넘어가는 편이다. 그러다 보니 문제가 나오면 어떻게 풀어야 할지 막막하다.
그래도 한번 쭉 훑어보는 데 더 도움이 될 것 같아 이렇게 학습해볼 예정이다.

이 문제를 풀면서 어제 풀었던 8장 4번 연습문제가 이해가 되었다. 어려운 문제가 아니라 하나의 테이블에 대해서 아직 알지 못했던 거였다.



 

문제 3번


 

분명 맞게 잘 한것 같은데 출력이 되지 않는다.

 

 

아무래도 오타가 있었던 것 같아 답을 복사해서 붙여넣어보았다.

 

존재하지 않은 것을 NOT IN으로 썼고 어디가 존재하지 않는지 서브쿼리로 넣어주었다. 그 외에는 특별히 어려운 것이 없는데 여기까지 생각을 해내는 것이 아직 잘 안되는 것 같다.



 

문제 4번

 

이상하게도 내가 풀면 똑같이 쓰는데도 출력이 되지 않는 경우가 많다. 이번에도 그 이유를 못 찾아서 붙여넣어 보았다.

다중행 함수를 사용하지 않는 건 3번 문제를 풀 때와 비슷한 방법이다. 이 과정은 그냥 생략한다.



학습을 마치고

서브쿼리 문제도 사실 거의 혼자서 푼 게 없지만 그래도 이렇게라도 비교하면서 풀어보는 게 도움이 되는 것 같다. 나중에 다 이해한 후에 문제를 풀려고 하면 하지 못할 가능성이 많으니, 많은 걸 알지 못했어도 문제를 풀어보았다.
그래도 지난 장을 학습할 때보다는 조금은 이해할 수 있었다.

주말에 엘리스에서 SQL 공부를 하는 게 좋을 것 같은데 책을 마친 다음에 해보려고 다음으로 미루었다. 처음 할 때는 어려워도 두번째, 세번째 공부하면 더 쉬워질 거라 생각한다.