...시작이 반이다
(참말이었다고 한다)
2일차의 날이 (벌써) 밝았다.
오늘은 팀 스터디가 없는 날이라 도서관에 가서(with 피크민) 노트북 열람실에서 온라인 강의를 수강할 일정을 세우고 본격적으로 강의를 듣기 시작했다.
계획을 세우기 위해 각 강의가 몇 강인지, 한 강의당 시간이 얼마나 소요되는지, 사전캠프 종료일까지 며칠 남았는지를 따졌다.
- 수강할 강좌는 총 4 과목
- 파이썬 문법 기초 (18강)
- 엑셀보다 쉽고 빠른 SQL (39강)
- [격파르타 시즌2] SQLD 자격증 챌린지 (48강)
- [격파르타 시즌2] ADSP 자격증 챌린지 (68강)
- 한 강의당 소요 시간
이걸 잘못 파악했고 의도치 않은 오늘의 빡공은 여기서 시작된다...- [파이썬 문법 기초]: 약 2시간
아니다 - [엑셀보다 쉽고 빠른 SQL]: 약 1시간 15분
이 또한 아니다 - (나머지 과목은 파악하지 않았음. 우선 위의 두 강좌부터 수강하기로 함.)
- [파이썬 문법 기초]: 약 2시간
- 오늘(1월 21일)으로부터 본캠프 시작 전(2월 16일)까지 남은 일수는 27일.
이렇게 파악했기에,
SQL 강의는 하루에 2강씩, 파이썬 강의는 하루에 1강씩
총 3개의 강의를 보면 하루에 3시간 반 정도는 온라인으로 수강
이라는 첫 계획을 세우게 된다.
오늘은 [파이썬 문법 기초] 1강, [엑셀보다 쉽고 빠른 SQL] 2강을 듣기 위해 우선 SQL 1주차 강의부터 수강하기 시작했다(파이썬이라는 짐작 안 가는 무언가보단 '엑셀보다 쉽고 빠른'이 붙은 강의에 더 마음이 가서 SQL부터 시작했다. 이렇게 문구란 중요한 것이다).
...그렇게 SQL 1강(?) 1시간 8분, SQL 2강 43분 강의를 수강하고 노션에 내용을 정리하고 숙제까지 다 제출하고 나와서 파이썬을 들으러 나오니 SQL 강의를 수강한 만큼 진도율이 바뀌어 있었다. 내 예상과 달리.
...?
?????
벌써 절반 가까이 들었다고요? 제가요?? 이걸 보니 그제야 내가 '1강=1주차'으로 여겼던 것이 실은 '1강=10분 가량의 동영상 1개'였음을 알아차렸다. (왤케 무리했어!!! 나도 모름ㅠ)
...아무튼, 그럼 오늘 강의는 여기까지 듣기로 하고 파이썬은 다른 날 공부하기로 했다. 그리고 내일 다시 일정 계획을 손보기로.
처음에 강의실에 있는 강의들의 강의 개수만 보고 18강+39강+48강+68강인데 어떻게 사전캠프 한 달 동안 다 듣지? 막막했는데, 지금 보니까 쌉가능이었구나 싶다. 오히려 좋아, 굿~
오늘의 TIL
수강한 강의: [엑셀보다 쉽고 빠른 SQL] 1주차, 2주차
SQL(Structured Query Language, 구조화 질의어)
- SQL은 데이터베이스와 내가 소통할 때 사용하는 언어다.
(query가 '질문하다, 문의하다'라는 뜻이라는 걸 상기하면 쉽게 이해할 수 있는데, query language라 함은 정보를 검색하기 위해 설계된 전용 언어라고 한다. 외국어를 배우듯 배우면 된다 생각하면 좀 더 가깝게 느껴진다.) - Query는 데이터베이스에 무언가를 요청하는 행위 자체를 지칭한다. 그래서 SQL을 작성할 때 'Query를 작성한다'라고도 말하기도 하니 '무슨 말이지?' 하며 당황하지 말도록.
데이터베이스
- 데이터베이스는 데이터가 저장되어 있는 커다란 폴더 ('sparta'가 데이터베이스에 해당)
- 테이블은 데이터베이스 안에 저장된 각 파일들 ('customers'가 테이블. 엑셀과 유사한 구조를 가짐.)
- 컬럼(혹은 필드)은 테이블 안에 각 열들 ('customer_id' 열, 'name'열, 'email'열, 'gender'열, 'age'열.)
SQL로 Query하기
- SELECT/FROM: 데이터를 조회하는 가장 기본적인 문법
- '어느 테이블에서 어떤 데이터를 가져와라'
- * : 모든 컬럼
- 어떤 컬럼을 둘 이상 불러올 때는 쉼표(,)로 구분하여 나열하여 입력함.
- 컬럼에 별명 불이기: 컬럼 as 별명 / 컬럼 별명 (별명이 특수문자, 한글, 띄어쓰기가 들어간다면 큰 따옴표 안에 작성)
- WHERE: 조건절
- 어느 테이블에서 '어떤 조건에 해당하는 데이터만' 가져와라
- 조건 입력 시 숫자는 그냥 입력, 문자는 작은 따옴표 안에 입력
- 비교연산자(=, <>, >, >=, <, <=), BETWEEN a AND b, IN (a, b, c), LIKE '가%', LIKE '%다%' 등
- 논리연산자(AND, OR, NOT)
- SQL로 계산하기
- 기본적인 숫자 연산자: +, -, *, /
- 함수로 연산하기: SUM(컬럼), AVG(컬럼)
- 함수로 개수 세기: COUNT(컬럼), COUNT(1) ※중복을 제거하고자 할 땐 DISTINCT를 함께 입력
- 함수로 최솟값 구하기: MIN(컬럼) / 함수로 최댓값 구하기: MAX(컬럼)
- GROUP BY: 범주별로 한번에 연산하고자 할 때
- ORDER BY: 조회한 결과를 원하는 순서로 나타내고자 할 때
- 따라서 SQL의 기본 구조는 SELECT-FROM-WHERE-GROUP BY-ORDER BY 순으로 입력한다.
SQL 기본 구조 연습하기(feat. 2주차 숙제)
💁♀️ 음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기
나는 위의 문제를 다음과 같은 순서로 풀었다.
SELECT*
FROM food_orders
우선 "음식 종류", "주문 금액"에 해당하는 정확한 컬럼명을 알기 위해 food_orders 테이블을 불러온다.
food_orders 테이블을 보니 "음식 종류" 컬럼명은 cuisine_type, "주문 금액" 컬럼명은 price라는 것을 알아냈다.
이제 우리가 처리해야 할 것은 3가지다. ①음식 종류별로 > ②가장 높은 주문 금액과 가장 낮은 주문 금액을 조회하고 > ③이렇게 골라진 데이터들을 가장 낮은 주문 금액 기준에서 내림차순으로 정렬할 것.
SELECT
max(price) highest_price,
min(price) lowest_price
FROM food_orders
이 중 ②번 내용을 먼저 반영한다. MAX 함수와 MIN 함수를 사용하고, 컬럼명에 별명을 붙여 보기 좋게 조회되도록 한다.
SELECT cuisine_type,
max(price) highest_price,
min(price) lowest_price
FROM food_orders
GROUP BY cuisine_type
그리고 그 최댓값과 최솟값을 음식 종류별로 연산하도록 ①의 내용을 GROUP BY로 입력한다.
SELECT cuisine_type,
max(price) highest_price,
min(price) lowest_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min(price) desc
마지막으로 해당 데이터들이 조회될 때 요구한 대로 정렬시키기 위해 ③의 내용을 ORDER BY로 입력한다. 가장 낮은 주문금액 기준이니까 min(price)에 내림차순을 요구했으니 desc까지 붙인다.
아 드디어 오늘의 TIL 다 썼다. 너무 힘들다. 와.
내일 할 것은
- 2번째 아티클 스터디하기
- 오늘 배운 부분에 해당하는 '사전캠프 퀘스트[걷기반.ver]' 확인해서 공부하기
- 사전캠프 온라인강의 수강 일정 계획 조정하기
- 파이썬 공부 시작하기
- 사전캠프 3일차 TIL 작성 및 제출하기
- (그리고 여유가 있다면 개인노션페이지에 불렛저널 형태로 매일매일의 진척 상황을 볼 수 있는 데이터베이스를 추가해놓고 싶다)
내일도 아좌아좌 화이팅이닷!!
'[내배캠] 데이터분석 6기 > 사전캠프 기록' 카테고리의 다른 글
[사전캠프 5일차] 아티클 스터디③, 스타터노트 작성, SQL 복습, 파이썬 복습 (1) | 2025.01.25 |
---|---|
[스타터 노트] 데이터 분석 트랙을 신청한 이유 (0) | 2025.01.24 |
[사전캠프 4일차] 파이썬 복습, SQL 복습 및 학습 (0) | 2025.01.23 |
[사전캠프 3일차] 아티클 스터디 ②, SQL 복습, 파이썬 공부 (1) | 2025.01.22 |
[사전캠프 1일차] 내배캠 데이터분석6기 OT 및 데이터 분석 아티클 스터디 (0) | 2025.01.20 |