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

[TIL] camp_day7_240423

단ee 2024. 4. 23. 21:03
  • 2주차 두 번째 날. 오늘도 SQL 특강과 과제가 주어졌고, 저녁에는 학습법 관련 세션이 있었다.

학습 내용


  • SQL 작동 순서

      SQL
    
      # FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
    
      SELECT              -- (7)
      column_1 
      ,DISTINCT column_2  -- (8) : SELECT 다음 DISTINCT 진행
      ,column_3
      FROM a              -- (1)
      JOIN b              -- (3)
        ON a.key = b.key  -- (2)
      WHERE               -- (4)
      GROUP BY            -- (5)
      HAVING              -- (6)
      ORDER BY             -- (9)
  • 집계함수(sum, avg 등)를 사용할 때, 특정 컬럼을 기준으로 삼을 수는 있으나, 이 컬럼을 GROUP BY로 그룹핑을 해주어야 에러가 나지 않는다.

  • WHERE 절과 HAVING 절 모두 필터링에 필요한 조건을 적어줄 수 있지만, 작동 순서에 차이가 있다.

    • WHERE(4) : GROUP BY(5) 전에 실행된다. 따라서 GROUP BY 실행 전 데이터를 기준으로 필터링한다.
    • HAVING(6) : GROUP BY(5) 후에 실행된다. 따라서 GROUP BY가 실행된 결과로 필터링 한다.
    • Subquery를 사용하여 where과 having 둘 다 같은 결과를 출력하도록 할 수 있다.
  • Range함수_Python

      Python
      range(start, stop, step)
      # 연속된 숫자(int)를 만들어준다.
      # start에서 시작하지만, 마지막 숫자 stop은 포함하지 않는다.
      # step : 간격. range(0, 10, 2) 이면 [0, 2, 4, 6, 8] 출력
    • 프로그래머스 문제 중 짝수의 합을 구하는 문제에서 활용
      짝수의 합

      Python
      # 문제 : 0 < n <= 1000 인 n에 대해 1부터 n까지 짝수만 더하기
      #    -> 짝수 : 정수, 2로 나누었을 때 나머지가 0
                    # 따라서 짝수는 정수에 2를 곱해서 표현 가능
                    # n = 2 * m 일 때, 
                    # 2 * ( 1 + 2 + 3 + ... + m)으로 출력되면 문제가 해결될 것
      
      def solution(n):
        total = sum(range(1, (n // 2) + 1))
                 # n이 홀수인 경우, m이 버려지게 됨. 따라서 추가.
      return total * 2
    • 파이썬 문제를 풀 때 구현하려는 논리를 말로 풀어쓴 다음, 필요한 기능이나 함수를 GPT에게 물어보니까 금방 풀 수 있었다.

고찰 & 기타


  • 어제보다 시간 활용은 효율적으로 잘 했지만, 갑자기 감기기운 올라와서 자격증 공부를 목표한 만큼 다 하지 못했다.
  • 알고리즘 코딩테스트 풀 때, 예전에 썼던 함수가 동일하게 적용 가능한 문제가 있었다. 푼 문제는 전부 노션에 DB로 코드와 함께 기록 중인데, 그래서 덕분에 그 페이지만 훑어보고 해결할 수 있었다. 앞으로도 공부한 기록 DB 관리를 잘 해야겠다.

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

[TIL] camp_day9_240425  (1) 2024.04.25
[TIL] camp_day8_240424  (0) 2024.04.24
[TIL] camp_day6_240422  (1) 2024.04.22
[TIL] camp_day5_240418  (0) 2024.04.19
[TIL] camp_day4_240418  (0) 2024.04.18