이제까지 앞에 있던 강의들은 매우 쉬웠는데 이번주차부터는 다소 복잡해진 쿼리와 생각을 많이 해야하는 복잡함까지 오게된것 같다. 왜 회사에서 개발자들이 초콜렛, 커피 등 과자를 많이 먹는지 알겠다... 난 이렇게 잠깐 했는데도 벌써 허기지고 단게 땡기는데... 그 사람들은 얼마나 열량소비가 심할꺼야...??! 그래도 솔직히 나는 그런 모습이 멋지게 보이고 저렇게 되고 싶다는 생각이 많이 들었다.

말이 잠깐 다른데로 세었는데, 이번주 숙제에서 생각보다 많은 시간을 허비했다. 쿼리에 에러는 없었으나 아무리 봐도 답이 아닌 결과값이 나와서 답답했다. 이리해보고 저리해봐도 원하는 결과값이 안나와서 결국 숙제 답을 봐버렸다...(한번도 답보기전에 못푼적은 없었는데 ㅠ_ㅠ)
알고보니 '='쓸 자리에 'and'를 썼었다.... 제길.... 몇번을 다시 보고 또 봐도 발견을 못하다니..... 그래서 개발자들이 골머리를 싸매고 일하는가보다...

아무튼 이번주 배운 내용을 아래와 같이 정리하려 한다

* inner join vs left join (그리고 Union)

  • join = 다른 table에 있는 정보를 가지고와서 한번에 보는것! (단, 서로 다른 tables에 공통적인 항목이 있어야 가능함)
  • inner join = Table A 와 B의 공통적인 부분만 추려서 가지고옴
  • left join = Table A 와 B가 합쳐지지만 B가 A에 해당되지 않는 항목은 "NULL"로 보이게 됨.

** 두개의 다른 결과 값을 한번에 보기 위한 쿼리 Union

예시)
(
select '7월' as month, c.title, c2.week, count() as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at < '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)
union all
(
select '8월' as month, c.title, c2.week, count(
) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at > '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)

이렇게 하면 정렬이 깨진다고 한다. 이럴때 유용한 방법은 SubQuery (서브쿼리).
다음주차에 배운다고 한다.

느낀점. 벌써 다음 3주차가 끝나고 4주차가 다가오고 있다... 실제 일수는 4일차... 처음 생각보다 빠르게 끝내고 있다! 이렇게 실제로 해보고 이론 공부도 하면서 SQL자격증 슬슬 본격적으로 준비해봐야겠다. 그리고 스파르타코딩 다른 수업도 들어볼까 생각중... 다른 것도 이렇게 빨리 습득할 수 있는거면 나름 괜찮은 자기개발인것 같다! (다음에는 앱개발들어볼까..?)

profile
개발자.. 가능할까?

0개의 댓글