SQL 아카아빙

4주차 강의 아카이빙

shl4917 2023. 4. 6. 22:47

짧다면 짧고 길다면 긴 SQL 강의를 완주했다. 
마지막 강의는 확실히 실무에서 많이 쓰이는 함수이다 보니 난이도가 더 있는 편이였다.

 

쿼리는 엑셀에서도 유용하게 쓰일 수 있지만, 실무에서 자유자재로 못 다뤘던 점이 아쉬웠다.

SQL 에서도 쿼리란 단어로 실무에서 많이 쓰인다고 하니 좀 더 집중하면서 강의를 들었던 것 같다.

 

여태까지 배웠던 함수에서 서브쿼리를 적용해서 원하는 데이터를 추출하는 건 아직은 나에겐 쉬운일은 아니였다.

where 절에 들어가는 Subquery를 사용할 경우, 간단하게 생각하면 where 절에 내가 원하는 함수를 그대로 넣으면 된다.


예시 : 전체 유저의 포인트의 평균보다 큰 유저들의 데이터 추출하기
select * from point_users pu
where point > (select AVG(point) from point_users pu)


원하는 데이터를 어떻게 만드는가에 따라 다양한 방법으로 데이터를 추출할 수 있다.

예시로 Select 절과 From 절에도 동일한 방식으로 서브쿼리를 넣을 수 있는 몇 가지 예시를 언급해보겠다. 


예시: checkins 테이블에 course_id별 평균 likes수 필드 우측에 붙여보기

Select checkin_id, course_id, user_id, likes,
(select AVG(c2.likes) from checkins c2
where c.course_id = c2.course_id)
as course_avg
from checkins c

코드스니펫 입력 시 데이터 결과

예시: checkins 테이블에 과목명별 평균 likes수 필드 우측에 붙여보기

Select checkin_id, c3.title , user_id, likes,
(select AVG(c2.likes) from checkins c2

where c1.course_id = c2.course_id

) as course_avg

from checkins c1

inner join courses c3 on c1.course_id = c3.course_id

 

코드스니펫 입력 시 데이터 결과

예시: course_id별 유저의 체크인 개수를 구해보기!

select course_id, COUNT(DISTINCT(user_id)) from checkins
group by course_id

코드스니펫 입력 시 데이터 결과


 

다시 한 번 정리해보니 동일한 문제를 풀어보는 건데도 틀린다..! : (( 

하지만 서브쿼리는 정해진 답을 입력하는 것이 아니다. 

중요한 것은 원하는 데이터를 추출하기까지 다양한 코드를 사용해보는 점 인 것 같다. 

 

이로써 SQL 개발일지를 모두 작성해보았다. 

처음엔 강의를 수강하기 위한 숙제로서 가볍게 글을 작성했다.

하지만 새로운 지식을 기록하다보니 해당 글은 훗날 나에게 어떠한 형태로든 도움이 될 수 있을 것이란 확신이 들었다.

 

마지막은 완주한 기념으로 나오는 창으로 글을 마무리 지으려고 한다. 

평소에 글을 작성하지 않아 어색하기도 하고 다시 한번 읽었을 때 너무 딱딱한 느낌이 들지 않나 싶다.

이번 일을 계기로 배움에 대한 글 뿐 아니라 일상에서 느끼는 생각들을 정리해서 기록하는 습관을 가지겠노라 다짐했다. 

 

언젠가 SQL 을 실무에서 활용할 날을 기대하며..!