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

[TIL] camp_day25_240521

단ee 2024. 5. 24. 08:49

하루 종일 프로젝트로 정신 없었고, SQL 챌린지반 첫 세션을 들었다. 몰랐던 함수를 알게 돼서 막혔던 코테를 풀 수 있을 것 같다.

학습 내용


  1. Window Function(SQL)

    • GROUP BY 로 그룹핑한 효과를 내주지만, 모든 행을 출력하고 싶을 때 사용한다!
    • GROUP BY 구문과 병행하여 사용이 불가능하고, 다른 함수와 다르게 중첩 사용이 불가능하다.
    • 기본 문법
        SQL
        SELECT WINDOW FUNCTION () OVER (PARTITION BY  ORDER BY)
    • 함수 종류
      1. 순위
        1. ROW_NUMBER() : 중복 순위를 매기지 않고, 어떻게든 데이터 간에 순위를 매겨주는 함수
        2. RANK() : 중복 순위를 매김. 공동 n등이 존재하고, 그 다음 순위는 공동 순위 인원 수만큼 밀린다.
          즉, 공동 1등 2명이면 그 다음 순위는 3등
        3. DENSE_RANK() : 중복 순위를 매김. 공동 n등이 존재하지만, 순위는 연속적으로 매긴다.
      2. 순서
        1. FIRST_VALUE() : 파티션 별로 가장 먼저 나온 값을 출력한다. 중복순위를 매기지 않는다.
        2. LAST_VALUE() : 파티션 별로 가장 나중에 나온 값을 출력한다. 중복 순위를 매기지 않는다.
        3. LAG() : 현재 행을 기준으로 n 번째 앞에 있는 행의 값을 "지연시킨다."
          값이 n칸씩 아래로 밀리는 셈이므로 head 쪽에 NULL 이 생김. n 값은 Default 1, 최대 3
        4. LEAD() : 현재 행을 기준으로 n 번째 뒤에 있는 행의 값을 "끌어온다."
          값이 n칸씩 위로 당겨지는 셈이므로 tail 쪽에 NULL 이 생김. n 값은 Default 1, 최대 3
      3. 비율
        1. CUME_DIST() : 파티션 별로 전체 건수에서 현재 행보다 작거나 같은 건수에 대해 누적 백분율 출력
  2. 쿼리 스타일 가이드(SQL)

    • 강의에서 커버한 부분도 있고, 내가 따로 검색해서 찾아본 내용도 있다.
    • Mozilla의 쿼리 스타일 가이드를 주로 참고한다고 SQL Style Guide
    • SQL 쿼리 작성 가이드
      1. 예약어는 대문자로 작성한다.(ex. SELECT, FROM)
      2. 컬럼명은 snake_case로 작성.
        cf. CamelCase로 쓰는 회사/단체라면 정해진 규칙에 맞춰 쓴다.
      3. 컬럼명 또는 테이블명을 명명할 때는 명시적인 이름을 사용한다.
      4. 쿼리문은 왼쪽 정렬로 작성할 것
      5. 예약어나 컬럼은 한 줄에 하나씩 작성하는 것을 권장 : 디버깅 할 때 용이함.
      6. 별칭을 명명할 때는 ‘AS’ 를 사용하여 알아보기 쉽게 한다.
      7. Join 타입을 명시한다. ON 으로 조인 조건을 작성할 때는 JOIN 다음 줄에 들여쓰기 후 작성.
      8. 서브쿼리를 남발하는 것 보단 CTE(Common Table Expression)를 적극 활용하자

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

[TIL] camp_day27_240523  (0) 2024.05.24
[TIL] camp_day26_240522  (0) 2024.05.24
[TIL] camp_day24_240520  (0) 2024.05.20
[TIL] camp_day23_240517  (0) 2024.05.17
[TIL] camp_day22_240516  (0) 2024.05.16