Learning/SQL

[강의] BigQuery(SQL) 입문_인프런 (2)

테뉴 2025. 1. 2. 13:43

- 강의명 : 초보자를 위한 BigQuery(SQL) 입문

 

 

[지금 무료]초보자를 위한 BigQuery(SQL) 입문 강의 | 카일스쿨 - 인프런

카일스쿨 | , 요즘 필수인 데이터 분석 도구, BigQuery어떻게 시작해야 할지 고민인가요? 👀Google Analytics4(GA4), Firebase(파이어베이스)를 사용하는 회사가 많아지면서 많은 회사들이 데이터 웨어하우

www.inflearn.com


 

저장된 데이터 확인하기 

 

[데이터 저장 형태 확인법]

- ERD(Entity Relationship Diagram) : DB 구조를 한 눈에 알아보기 위해 사용

- ERD가 없다면 모든 DB 직접 보며 탐색

  ㄴ 어떤 테이블이 존재하는가 / 어떤 컬럼이 존재하는가 / 다른 테이블과 연결할 때 어떤 컬럼을 사용하는가 / 칼럼 값들은 어떤 의미인가

  → 스프레드시트나 문서로 따로 정리해두기 : 내가 자주 쓰는 테이블부터 정의하고 확장하기

출처 : 초보자를 위한 BigQuery(SQL) 입문 강의 노트

 

[회사에 존재할 수 있는 데이터 예시]

1) 서비스에 사용될 데이터 베이스 

- 유저 테이블 / 배송 테이블 / 물건 테이블

2) 앱/웹 로그 데이터

- 유저가 앱/웹에 들어와서 회원가입 - 페이지 확인 등 데이터(과정을 알 수 있음)

3) 공공 데이터, 서드파티 데이터

- 날씨 / 페이스북 광고 데이터 

 

[데이터 탐색]

※ 조건과 추출

1) FROM

: 데이터를 확인할 Table 명시

: 이름이 너무 길다면, AS "별칭"으로 지정 가능 

2) WHERE

: FROM에 명시된 Table에 저장된 데이터를 필터링(조건 설정)

3) SELECT

: Table에 저장되어 있는 칼럼 선택 

: 여러 칼럼 명시 가능 

 

[SQL 쿼리 구조]

SELECT

 칼럼1,

 칼럼2,

 칼럼3

FROM 테이블

WHERE

 <조건문>

 

※ 순서 : SELECT > FROM > WHERE

 

※ 요약(집계, 그룹화)

- 집계하다 : 모을 집, 계산할 계

  → 모아서(=그룹화해서) 계산하다 

  → 더하기, 빼기, 최댓값, 평균 등 

 

- GROUP BY : 같은 값끼리 모아서 그룹화한다

→ 색상 기준으로 모은다 

→ 특정 칼럼을 기준으로 모으면서 다른 컬럼에서 집계 가능(합, 평균, MAX, MIN 등)

 

그룹화(집계) 활용 포인트

→ 데이터 분석하다가 그룹화하는 경우

- 일자별 집계(원본 데이터는 특정 시간에 어떤 유저가 한 행동이 기록, 일자별로 집계)

- 연령대별 집계(특정 연령대에서 더 많이 구매했는가?)

- 특정 타입별 집계(특정 제품 타입을 많이 구매했는가?)

- 앱 화면별 집계(어떤 화면에 유저가 많이 접근했는가?)

 

[SQL 쿼리 구조]

SELECT

 집계할_컬럼1,

 집계 함수(COUNT, MAX, MIN 등)

FROM 테이블

GROUP BY

 집계할_컬럼1

 

집계할 컬럼을 SELECT에 명시하고, 그 컬럼을 꼭 GROUP BY에 작성 

※ 빅쿼리 집계 함수 정리

출처 : 초보자를 위한 BigQuery(SQL) 입문 강의 노트

 

- DISTINCT : 별개의, 여러 값 중에 Unique한 것만 보고 싶은 경우 사용

→ 중복을 제거하는 것 

 

[SQL 쿼리 구조]

SELECT

 집계할_컬럼1,

 COUNT(DISTINCT count할-칼럼)

FROM 테이블

GROUP BY

 집계할_컬럼1

 

→ 메인 페이지 View 수 : 4번COUNT(user_id)

→ 메인 페이지 View한 유저의 수 : 3명

COUNT(DISTINCT user_id)

출처 : 초보자를 위한 BigQuery(SQL) 입문 강의 노트

 

[비교]

- WHERE :  테이블에 바로 조건을 설정하고 싶은 경우 사용

→ Raw 데이터인 테이블 데이터에서 조건 설정 

 

- HAVING :  GROUP BY한 후에 조건을 설정하고 싶은 경우 사용 

 

[서브 쿼리]

- SELECT 문 안에 존재하는 SELECT 쿼리

- FROM 절에 또 다른 SELECT 문을 넣을 수 있음

- 괄호로 묶어서 사용

 

서브 쿼리를 작성하고, 서브 쿼리 바깥에서 WHERE 조건 설정하는 것 = 서브 쿼리에서 HAVING으로 하는 것 

 

- ORDER BY

SELECT

 col

FROM

ORDER BY <컬럼>, <순서>

 

순서 : DESC(내림차순), OSC(오름차순)

→ ORDER BY는 쿼리 맨 마지막에 두고, 마지막에 작성하면 됨 

 

- LIMIT : 쿼리문의 결과 Row 수를 제한하고 싶은 경우쿼리문의 맨 마지막 사용

- NULL : 아무것도 없는 값 → 값이 존재하지 않을 때 NULL

  ㄴ NULL은 0이랑 다르고, **과도 다름 → 값이 없는 상

 

- DISTICNT : 고유한 값(UNIQUE)만 알고 싶은 경우 

  ㄴ DAU : Active한 유저의 수를 하루 단위로 집계

  ㄴ COUNT(DISTINCT user_id) AS dau 

 

[요약, 집계, 그룹화 정리]

- 집계하고 싶은 경우 : GRUOP BY + 집계 함수(AVG, MAX 등)

- 고유값을 알고 싶은 경우 : DISTINCT

- 조건을 설정하고 싶은 경우 : WHERE / HAVING

- 정렬하고 싶은 경우 : ORDER BY

- 출력 개수를 제한하고 싶은 경우 : LIMIT