- 강의명 : 초보자를 위한 BigQuery(SQL) 입문
[지금 무료]초보자를 위한 BigQuery(SQL) 입문 강의 | 카일스쿨 - 인프런
카일스쿨 | , 요즘 필수인 데이터 분석 도구, BigQuery어떻게 시작해야 할지 고민인가요? 👀Google Analytics4(GA4), Firebase(파이어베이스)를 사용하는 회사가 많아지면서 많은 회사들이 데이터 웨어하우
www.inflearn.com
저장된 데이터 확인하기
[데이터 저장 형태 확인법]
- ERD(Entity Relationship Diagram) : DB 구조를 한 눈에 알아보기 위해 사용
- ERD가 없다면 모든 DB 직접 보며 탐색
ㄴ 어떤 테이블이 존재하는가 / 어떤 컬럼이 존재하는가 / 다른 테이블과 연결할 때 어떤 컬럼을 사용하는가 / 칼럼 값들은 어떤 의미인가
→ 스프레드시트나 문서로 따로 정리해두기 : 내가 자주 쓰는 테이블부터 정의하고 확장하기


[회사에 존재할 수 있는 데이터 예시]
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에 작성

- DISTINCT : 별개의, 여러 값 중에 Unique한 것만 보고 싶은 경우 사용
→ 중복을 제거하는 것
[SQL 쿼리 구조]
SELECT
집계할_컬럼1,
COUNT(DISTINCT count할-칼럼)
FROM 테이블
GROUP BY
집계할_컬럼1
→ 메인 페이지 View 수 : 4번COUNT(user_id)
→ 메인 페이지 View한 유저의 수 : 3명
COUNT(DISTINCT user_id)

[비교]
- 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
'Learning > SQL' 카테고리의 다른 글
| [강의] BigQuery(SQL) 입문_인프런 (1) (0) | 2024.12.26 |
|---|---|
| [SQL] SQL로 하는 데이터 분석 (4)_코드잇 (0) | 2024.01.28 |
| [SQL] SQL로 하는 데이터 분석 (3)_코드잇 (0) | 2024.01.23 |
| [SQL] SQL로 하는 데이터 분석(2)_코드잇 (0) | 2024.01.16 |
| [SQL] SQL로 하는 데이터 분석(1)_코드잇 (0) | 2023.12.28 |