내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day14_240502

단ee 2024. 5. 2. 20:57

3주차 넷째 날. 오늘은 파이썬 개인 과제를 10번까지 풀었고, 제일 어려운 두 문제만 남았다! 그리고 SQL 코딩테스트 문제를 열심히 풀었다.

학습 내용


  • 안 풀렸던 SQL 코딩테스트 해결
    • 프로그래머스.대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
    • 안 풀려서 묵혀두고 째려보던 문제였는데, 오늘 풀었다!
    • 첫 번째 쿼리 : From 절에서 서브쿼리를 이용해 조건에서 요구한 기간 내 총 대여횟수가 5회 이상인 자동차의 대여 횟수를 구했다.
      • 문제점 ) 전체 기간 중 5회 이상(8월 2회, 9월 2회, 10월 2회)이 아니라 각각의 월별 대여 횟수가 5회 이상인 데이터만 출력됨
    • 두 번째 쿼리 : 이번엔 Where 절에 서브쿼리를 이용해 조건에서 요구한 값의 id를 추출하고, 원래의 table에서 일치하는 값을 구했다.
      • 문제점 ) 이 경우, 문제에서 요구한 기간(22년 8~10월) 동안의 데이터만 출력되도록 하는 조건이 없었다.
      • 출력 결과에는 8~10 월의 데이터만 있어서 답이 맞게 나오는데 왜 안되지 하고 좀 오래 고민했다.
    • 세 번째 쿼리 : 두 번째 쿼리에서 누락된 조건문을 where 절에 추가하여 성공. 최종 쿼리는 아래와 같다. 두 번째에서 추가한 부분 주석처리
        SQL
        SELECT MONTH(START_DATE) as MONTH
        ,CAR_ID
        ,COUNT(START_DATE) as RECORDS
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
        WHERE CAR_ID in
            (
             SELECT CAR_ID
             FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
             WHERE DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' and '2022-10'
             GROUP BY CAR_ID
             HAVING COUNT(START_DATE) >=5
            )
        AND DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' and '2022-10'
         # 이 조건 추가함!!
        GROUP BY 1, 2
        HAVING RECORDS != 0
        ORDER BY MONTH ASC, CAR_ID DESC

고찰 & 기타


  • 처음에 안 풀렸던 문제라도, 안 풀렸던 쿼리나 코드를 기록해두고 나중에 다시 열어보니까 그 기간 동안 쌓인 실력만큼 당시에 부족했던 부분이나 아예 새로운 시각에서 작성할 수 있었다.
  • 오늘 코테 해결했던 경험을 토대로, 시간을 두고, 다만 꾸준한 학습을 병행한다면 부트캠프가 끝날 때 정말 많이 성장해있을 것이라는 확신이 들었다!
    • SQL 문제 하나가 너무 안 풀리고 이상해서 그걸 들고 튜터님을 찾아갔더니 너무나 쉽게 문제점을 바로 찾아주셨다. 이래서 나 말고 다른 사람의 시각에서 코드를 리뷰하는 게 필요하구나 느꼈다. 또 파이썬 과제로 다른 팀원들과 각자의 코드를 적고 리뷰하는 시간을 가졌는데, 다른 사람들의 작성법을 보는 것만으로도 상당한 공부가 되었다.

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day16_240507  (0) 2024.05.07
[TIL] camp_day15_240503  (0) 2024.05.03
[TIL] camp_day13_240501  (1) 2024.05.01
[TIL] camp_day12_240430  (0) 2024.04.30
[TIL] camp_day11_240429  (0) 2024.04.29