SQL의 꽃이라고 할 수 있는 SELECT절! 분석을 하는 데에는 select 위주로 학습할 필요성이 있다.
2일차. 데이터 탐색(SELECT, FROM, WHERE) 에 대한 이해 & 연습 문제 풀기
데이터가 여러 장소에 저장되어 있는 경우,
특정 테이블에 있는 데이터를 각각 추출 후 > 연결하는 개념으로 이해하면 된다.
이때 "집합"의 개념으로 생각하면 좋다.
겹치는 부분에 대한 교집합 부분을 가져온다는 것이니 로직을 고려할 때 참고해두자.
이때 데이터 구조를 이해할 때 도식화를 해주면 이해하기 편하다.
✅ 추출 및 테이블 조회 > Join > 원하는 데이터 추출을 통해 연결지어 보여주는 로직!
(구글 빅쿼리는 1TB에 6달러가 과금되기에 보다 적은 용량으로 읽는 과정이 필요하다)
프로젝트 id, dataset, table 명시 기준
SELECT
* EXCEPT(eng_name)
-- id AS pokemon_id, # AS는 별칭을 지어줄 때 사용한다
-- kor_name,
-- type1,
-- total # command + / 하면 주석문 처리됨
FROM `inflearn-bigquery-458812.basic.pokemon`
WHERE
type1 = 'Fire'
#infrlearn-bigquery : 프로젝트 id
#basic : dataset
#pokemon : table
#'<프로젝트id>.<데이터셋>.<테이블>'
#프로젝트 id는 꼭 명시할 필요는 없을 수도 있음(프로젝트가 단일인 경우)
# 프로젝트를 여러 개 사용한다면 명시하는 것이 좋음 => 쿼리를 실행할 때 어떤 프로젝트인 지 확인하는 과정이 존재
# 프로젝트 id을 제외하고 작성할 때는 '없어도 괜찮음
# 데이터를 활용하고 싶은 목적이 있어야 어떤 컬럼을 선택할 지 알 수 있게 됨
✅ Point : 데이터를 활용하고 싶은 목적이 있어야 어떤 컬럼을 선택해 추출할 지 결정된다.
✅ Except 는 특정 컬럼을 제외하고 추출할 때 활용한다.
✅ AS 별칭 활용해줄 때는 따옴표가 필요없다. 실행되지 않는다.

가독성 있는 쿼리
쿼리를 잘 읽을 수 있으려면 잘 작성해야 한다. 이는 이후 협업할 때 중요하며
문서화를 작업하는 "템플릿화" 과정 중에 하나이기에 처음부터 잘 정리해두는 게 중요하다!
이 부분은 습관의 차이도 있고 초반에 잘 해두면 나중이 편한 작업이라고 생각한다.
SQL 문법

SQL 의 경우, FROM > WHERE > SELECT 의 로직으로 처리가 된다고 한다.
SQL 쿼리 구조는 SELECT > FROM > WHERE 순이며 반드시 이 구조를 유지해야 한다.
SELECT 컬럼 1, 컬럼 2, 컬럼 3
FROM 테이블
WHERE <조건문>
SELECT 연습 문제
여기서 핵심적으로 해야 할 부분은 "테이블에 있는 데이터 저장 형태를 떠올려야 한다"

1. Trainer 테이블에 있는 모든 데이터를 보여주는 SQL 쿼리를 작성해주세요.
# Tranier 테이블에 어떤 데이터가 있는 지 확인해보기
# Trainer 테이블을 어디에 명시해야 할까? => FROM
# 필터링 조건이 있을까? => 모든 데이터 => 필터링 할 필요가 없음
# 모든 데이터 => 모든 데이터의 정의는? 모든 컬럼일 수 있음(추측) 쿼리 작성
# => 애매하면 모든 데이터 정의 추출 요청한 사람에게 물어봐야 함
SELECT
*
FROM `inflearn-bigquery-458812.basic.trainer`
2. Trainer 테이블에 있는 트레이너의 name을 출력하는 쿼리를 작성해주세요.
# Tranier 테이블에 있는 트레이너의 name을 출력하는 쿼리 작성
# 필터링 조건이 있을까? 없다.
# 트레이너 이름만 필요한 상황으로 name 컬럼만 추출하기
SELECT
name
FROM `inflearn-bigquery-458812.basic.trainer`
3. Tranier 테이블에 있는 트레이너의 name, age를 출력하는 쿼리 작성해주세요.
# 3. Tranier 테이블에 있는 트레이너의 name, age을 출력하는 쿼리 작성
# 1) trainer 테이블 사용
# 2) 조건 설정 없음
# 3) name, age 컬럼 사용
SELECT
name,
age
FROM `inflearn-bigquery-458812.basic.trainer`
4. Trainer의 테이블에서 id가 3인 트레이너의 name, age, hometown을 출력하는 쿼리를 작성해주세요.
# 1) trainer 테이블 사용
# 2) 조건 설정 : id가 3
# 3) 컬럼 : name, age, hometown
SELECT
name,
age,
hometown
FROM
basic.trainer
WHERE
id = 3
# 현업에서는 이름, 나이를 알려주세요 => 컬럼의 의미를 파악해서 작성해야 함
# => 어떤 컬럼을 요구하는 지, 어떤 컬럼을 봐야 하는 지?
5. pokemon 테이블에서 '피카츄'의 공격력과 체력을 확인할 수 있는 쿼리를 작성해주세요.
# 1) pokemon 테이블 사용
# 2) 조건 설정 : kor_name = 피카츄
# 3) 컬럼 : kor_name, hp(체력), attack(공격력)
SELECT
kor_name,
hp,
attack
FROM
basic.pokemon
WHERE
kor_name = '피카츄'
*로 해서 모두 추출할 수 있지만 그러면 또 가공해야 하는 상황이 발생될 수 있으니
분석의 목적을 파악한 뒤 > 필요 데이터를 파악하는 과정이 꼭 필요한 것 같다.
✅ 핵심은 필요한 정보만을 추출하고 활용하는 능력, 어떤 컬럼을 통해 어떻게 볼 수 있을 지 고민이 선행되어야 한다.
✏️ 이번 강의와 학습을 통해 느낀점
✅ 데이터 구조와 테이블 자체를 이해하고 어떤 컬럼이 왜 필요한 지 정의가 먼저이다.
💪🏻 Next to do
☑️ 회사 내의 데이터셋 > 테이블 이해하기 / 각 연결성 확인하기
☑️ 집계를 통해 간단 추출하기 & 연습 문제를 통한 select절 익숙해지기
☑️ 회사 내 고객 통계 기반의 select 절 이해하기 => 다른 동료들이 짜놓은 쿼리 "왜 필요한 지" 관점에서 이해하기
'Google BigQuery' 카테고리의 다른 글
| [강의 수강 6일차] SELECT절 연습 문제 풀어보기 (3) (0) | 2025.05.21 |
|---|---|
| [강의 수강 5일차] SELECT절 연습 문제 풀어보기 (2) (0) | 2025.05.18 |
| [강의 수강 4일차] SELECT절 연습 문제 풀어보기 (1) (0) | 2025.05.14 |
| [강의 수강 3일차] 집계(Group by, having, sum/count) (0) | 2025.05.08 |
| [강의 수강 1일차] 인프런 초보자를 위한 구글 BigQuery 입문하기 (0) | 2025.05.04 |