[SQL] 핵심 정리 노트
·
SQL/BigQuery
SQL을 공부하며 배운 내용을 정리한 것이며, 개인적으로 기억하고 다시 찾아보기 위한 용도로 작성합니다.링크가 없는 경우 : [BigQuery 기초] 글에서 다뤘던 내용링크가 있는 경우 : 이후에 추가로 알게 된 내용 Last updated : 25.04.24 1. 쿼리 및 함수 정리 기본 쿼리 (추출, 조건)FROMWHEREAND, OR, NOT, INIS NULL비교연산자 (=, !=, ), BETWEEN(등호 포함)SELECTEXCEPT컬럼끼리 사칙연산 가능 (+, -, *, /)CASE WHEN ~ ENDIFORDER BY (OSC, DESC)`,`로 조건 여러 개 입력 가능 (첫 조건에서 동일 순서라면 다음 조건으로 정렬) 25.03.06LIMIT집계/계산GROUP BY (필수), GROUP ..
[SQL] 12. 연습문제 풀이
·
SQL/BigQuery
문제1 각 트레이너별로 가진 포켓몬의 평균 레벨을 계산하고, 그 중 평균 레벨이 높은 TOP 3 트레이너의 이름과 보유한 포켓몬의 수, 평균 레벨을 출력해주세요.    ❎내 풀이 과정- status 조건을 빼먹음..!더보기1) 데이터 확인 2) 일단 trainer_pokemon 테이블로 평균 레벨, 포켓몬 수를 계산해봄쿼리 결과 검증을 위해 trainer_id = 5인 경우로 WHERE 걸어서 먼저 실행 > 일치함!WHERE 빼고, ORDER BY 추가해서 다시 출력3) 여기서 트레이너 이름(trainer_name)만 출력하면 됨 = trainer 테이블 JOIN하자!2번의 결과를 WITH temp_table AS로 지정한 뒤, LEFT JOIN해서 출력 (ORDER BY는 맨 마지막으로 뺌)잘 나오는 ..
[SQL] 11. 쿼리 가독성(WITH), 데이터 결과 검증
·
SQL/BigQuery
1. 가독성을 높이는 SQL 쿼리 가이드쿼리를 가독성 있게 잘 써두면 동료들에게 설명할 시간을 줄일 수 있음+쿼리를 단순화하거나 쪼갤 줄 알면 실수를 줄일 수 있음쿼리를 변경/수정할 경우에도, 어떤 부분이 바뀐 건지 파악하기 쉬워야 함그래서 가독성을 챙기기 위한 가이드들이 존재함SQL 스타일 가이드 : https://www.sqlstyle.guide/Mozilla(Firefox) 스타일 가이드 : https://docs.telemetry.mozilla.org/concepts/sql_style.html SQL Style Guide - Mozilla Data DocumentationFrom Pep8: A style guide is about consistency. Consistency with this st..
[SQL] 10. 데이터 연결 (JOIN)
·
SQL/BigQuery
1. JOIN 개념 이해간단히 말해, 서로 다른 데이터(테이블)를 연결하는 작업처음에 좀 어렵게 느껴질 수 있는데, 문제 많이 풀어보면서 체화하는 게 좋음!연결하려는 테이블들에 공통으로 존재하는 컬럼(=Key)이 있어야 JOIN 가능!보통 id 값을 많이 사용하고, 특정 범위(ex. Date)로도 JOIN 가능함포켓몬 데이터 예시ex) 트레이너 데이터(trainer)와 포켓몬 데이터(pokemon)를 연결해보고 싶다면?두 데이터를 연결할 수 있는 공통값(key)이 없어서 불가능함.(id가 있다고 생각할 수 있지만, 엄밀하게는 각각 trainer_id, pokemon_id로 다른 값이라서 안 됨. 바로 연결하려면 trainer 테이블에 pokemon_id와 같은 컬럼이 있어야 함 → 그래서 보통 연결할 수..
[SQL] 9. 조건문 (CASE WHEN, IF)
·
SQL/BigQuery
(⚠️혹시 글자 폰트가 이상하게 깨질 경우, 새로고침하면 정상적으로 나옵니다!) 1. 조건문조건에 따른 분기 처리가 필요한 경우에 사용 (Excel의 IF 함수 같은 느낌)"특정 조건이 참이면 A, 그렇지 않으면 B"대표적으로 CASE_WHEN, IF 함수가 있음예를 들어, 조건에 따라 다른 값을 표시하고 싶은 경우1은 '일요일', 2는 '월요일', ... 6은 '토요일'로 출력하고 싶은 경우조건문 함수가 자주 사용되는 상황특정 카테고리를 하나로 합치는 전처리가 필요한 경우ex) 1,2,3학년은 '저학년', 4,5,6학년은 '고학년'으로 합치기 / 월~금은 '주중', 토~일은 '주말'로 합치기👨‍🏫 이런 상황이 발생하는 이유?• 보통 회사에서 데이터를 저장하는 부서와, 분석하는 부서가 나뉘어있음• 그..
[SQL] 8. 다양한 데이터 타입 (날짜 및 시간)
·
SQL/BigQuery
1. 날짜 및 시간 데이터날짜 및 시간 데이터 타입1) 시간 데이터 타입은 아래와 같은 종류가 있음DATE : 날짜만 표시 (ex. `2024-12-31`)TIME : 시간만 표시 (ex. `14:59:58.00`)DATETIME : 날짜와 시간을 표시 (ex. `2024-12-31 14:59:58`)단, TimeZone 정보는 없음!TIMESTAMP : UTC(또는 특정 기준)부터 경과한 시간을 나타내는 값 (ex. `2024-12-31 14:59:58 UTC`)TimeZone 정보 있음! (스탬프 찍었으니까)대부분 테이블에 시간 데이터가 TIMESTAMP로 저장된 경우가 많은데, DATETIME으로 변환 자유자재로 할 줄 알아야 함!⭐타임존(TimeZone) 개념을 이해해야 함!!!GMT(Greenw..
[SQL] 7. 다양한 데이터 타입 (CAST, 문자열)
·
SQL/BigQuery
1. 데이터 타입과 데이터 변환데이터 변환SELECT문에서 데이터를 변환시킬 수 있음또는 WHERE문의 조건문 내에도 사용할 수 있음데이터 타입에 따라 다양한 함수가 존재함데이터 타입대표적으로 아래와 같은 타입이 있음숫자 : `1`, `3.14` 등문자 : `"데이터"`, `"Me"` 등날짜 및 시간 : `2025-02-09`, `2025-02-09 23:59:58` 등  부울(Bool) : True / False(그 외 Json, Array 등 더 많음)눈에 보이는 것과 실제 저장된 값의 차이가 있기 때문에 중요함⭐ 비어있는 값 : ""일 수도 있고, NULL일 수도 있음1 : 숫자 1일 수도 있고 문자 "1"일 수도 있음2023-01-01 : 날짜 타입일 수도 있고 문자 타입일 수도 있음데이터 타입 ..
[SQL] 6. SQL 쿼리 작성 팁, 오류 디버깅
·
SQL/BigQuery
1. SQL 쿼리 작성 흐름 '쿼리 작성' 부분은 반복해서 하다보면 실력 늘기 마련이지만, 그 앞뒤의 과정들이 매우 중요함! 지표 고민 & 문제 정의 : 어떤 문제를 해결하기 위해 데이터가 필요한 걸까?지표 구체화 : 추상적이지 않고 구체적인 지표 명시 (분자/분모 표시, 이름 구체적으로 작성)생각없이 바로 쿼리 짜다가 '아 지표 정의 잘못했네'하면 다시 해야 함어떤 컬럼은 어떤 value만 써야 한다 등지표 탐색 : 유사한 문제를 해결한 케이스가 있는지 확인있으면 해당 쿼리 리뷰 (있는 쿼리 재활용)없으면 구글링해서 어떤 지표 쓰는 게 좋을지 참고 & 직접 쿼리 작성쿼리 작성 : 데이터가 있는 테이블 찾기, ERD 문서 등 참고테이블이 2개 이상인 경우, 연결(JOIN) 방법을 고민해야 함데이터 정합성..
[SQL] 4. 데이터 집계 (COUNT, DISTINCT, GROUPBY)
·
SQL/BigQuery
1. SQL 집계 함수집계(集計) : 모아서 계산하다 = 그룹화해서 계산(사칙연산, 통계량, 개수 등)하다SQL에서는 다양한 집계 함수를 사용할 수 있음 :자주 쓰는 함수 : AVG, COUNT, COUNTIF, MAX, MIN, SUM https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_functions  Aggregate functions  |  BigQuery  |  Google CloudSend feedback Aggregate functions Stay organized with collections Save and categorize content based on your preferences. GoogleSQL fo..