배또가또 2023. 12. 21. 21:31

스파르타 코딩클럽 내일배움캠프 4일차

 

  • 오늘 한 일
    • SQL 코드카타 문제 7개!
    • SQL 코딩테스트 블로그 작성
    • 팀 프로젝트 발표 자료(노션) 수정 및 발표 스크립트 관련 회의
  • 배운 것
    • SQL 문제를 풀 때 회원 수라고 하면 ROW수라는 뜻이 아니기 때문에 USER_ID에 DISTINCT를 걸어주어야한다.이거랑 유사하게 문제가 나왔을 때 낚이지 말아야겠다

팀 프로젝트 유튜브 발표자료 https://www.youtube.com/watch?v=zhLTXsOgpcw

 

발표는 팀원 분이 수고해주셨다! 감사합니다!

 

아래는 내가 오늘 풀었던 문제에서 DISTINCT를 쓰지 않아 어디가 틀렸는지 1시간을 고민했던 코드였다.

SELECT YEAR, 
       MONTH, 
       GENDER, 
       COUNT(DISTINCT USER_ID) AS USERS
FROM 
(
    SELECT U.USER_ID,
           DATE_FORMAT(O.SALES_DATE, '%Y') AS YEAR,
           DATE_FORMAT(O.SALES_DATE, '%m') AS MONTH,
           U.GENDER
    FROM USER_INFO U INNER JOIN ONLINE_SALE O ON U.USER_ID=O.USER_ID
    WHERE U.GENDER IS NOT NULL
) A
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3

 

분명히 정상 실행되고 정답예시랑 생긴 것도 똑같은데 왜지왜지? 하고 있었다가 결국 조원분께 질문을 드렸더니 

아 그거~ DISTINCT 해야 되여~ 하는 순간 아.... 회원수.....! 하면서 이마를 탁 쳤다. 

 

역시 익숙해지는 길은 길고도 험하구나 


  • 느낀점
    • 프로그래머스 3~4단계 SQL을 슬슬 풀기 시작하니까 한 문제 푸는데도 시간이 꽤 걸리고 있다. 앞으로도 꾸준히 하루에 3문제씩이라도 푸는 습관을 유지해야겠다.