[내배캠] 데이터분석 6기/사전캠프 기록

[사전캠프 2일차] 온라인 강의 수강 일정 계획 및 SQL 공부

물맨두 2025. 1. 21. 23:58

 

...시작이 반이다
(참말이었다고 한다)

 

2일차의 날이 (벌써) 밝았다.

 

오늘은 팀 스터디가 없는 날이라 도서관에 가서(with 피크민) 노트북 열람실에서 온라인 강의를 수강할 일정을 세우고 본격적으로 강의를 듣기 시작했다.

 

계획을 세우기 위해 각 강의가 몇 강인지, 한 강의당 시간이 얼마나 소요되는지, 사전캠프 종료일까지 며칠 남았는지를 따졌다.

  • 수강할 강좌는 총 4 과목
    • 파이썬 문법 기초 (18강)
    • 엑셀보다 쉽고 빠른 SQL (39강)
    • [격파르타 시즌2] SQLD 자격증 챌린지 (48강)
    • [격파르타 시즌2] ADSP 자격증 챌린지 (68강)
  • 한 강의당 소요 시간 이걸 잘못 파악했고 의도치 않은 오늘의 빡공은 여기서 시작된다...
    • [파이썬 문법 기초]: 약 2시간 아니다
    • [엑셀보다 쉽고 빠른 SQL]: 약 1시간 15분 이 또한 아니다
    • (나머지 과목은 파악하지 않았음. 우선 위의 두 강좌부터 수강하기로 함.)
  • 오늘(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주차

오늘(250121) 수강하며 노션 개인페이지에 정리했다

SQL(Structured Query Language, 구조화 질의어)

  • SQL은 데이터베이스와 내가 소통할 때 사용하는 언어다.
    (query가 '질문하다, 문의하다'라는 뜻이라는 걸 상기하면 쉽게 이해할 수 있는데, query language라 함은 정보를 검색하기 위해 설계된 전용 언어라고 한다. 외국어를 배우듯 배우면 된다 생각하면 좀 더 가깝게 느껴진다.)
  • Query는 데이터베이스에 무언가를 요청하는 행위 자체를 지칭한다. 그래서 SQL을 작성할 때 'Query를 작성한다'라고도 말하기도 하니 '무슨 말이지?' 하며 당황하지 말도록.

데이터베이스

DBeaver의 캡처 화면. 위의 화면을 통해 각 용어를 알아보자.

  • 데이터베이스는 데이터가 저장되어 있는 커다란 폴더 ('sparta'가 데이터베이스에 해당)
  • 테이블은 데이터베이스 안에 저장된 각 파일들 ('customers'가 테이블. 엑셀과 유사한 구조를 가짐.)
  • 컬럼(혹은 필드)은 테이블 안에 각 열들 ('customer_id' 열, 'name'열, 'email'열, 'gender'열, 'age'열.)

SQL로 Query하기

  1. SELECT/FROM: 데이터를 조회하는 가장 기본적인 문법
    • '어느 테이블에서 어떤 데이터를 가져와라'
    • * : 모든 컬럼
    • 어떤 컬럼을 둘 이상 불러올 때는 쉼표(,)로 구분하여 나열하여 입력함.
    • 컬럼에 별명 불이기: 컬럼 as 별명 /  컬럼 별명 (별명이 특수문자, 한글, 띄어쓰기가 들어간다면 큰 따옴표 안에 작성)
  2. WHERE: 조건절
    • 어느 테이블에서 '어떤 조건에 해당하는 데이터만' 가져와라
    • 조건 입력 시 숫자는 그냥 입력, 문자는 작은 따옴표 안에 입력
    • 비교연산자(=, <>, >, >=, <, <=), BETWEEN a AND b, IN (a, b, c), LIKE '가%', LIKE '%다%'
    • 논리연산자(AND, OR, NOT)
  3. SQL로 계산하기
    • 기본적인 숫자 연산자: +, -, *, /
    • 함수로 연산하기: SUM(컬럼), AVG(컬럼)
    • 함수로 개수 세기: COUNT(컬럼), COUNT(1) ※중복을 제거하고자 할 땐 DISTINCT를 함께 입력
    • 함수로 최솟값 구하기: MIN(컬럼) / 함수로 최댓값 구하기: MAX(컬럼)
  4. GROUP BY: 범주별로 한번에 연산하고자 할 때
  5. ORDER BY: 조회한 결과를 원하는 순서로 나타내고자 할 때
  6. 따라서 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까지 붙인다.

 

SQL 2주차 숙제를 DBeaver에서 입력하여 실습해 본 화면.

 


나는 사실 TIL 쓰는 게 제일 힘들다.. 시간도 개많이 걸려.....

아 드디어 오늘의 TIL 다 썼다. 너무 힘들다. 와.

 

내일 할 것은

  • 2번째 아티클 스터디하기
  • 오늘 배운 부분에 해당하는 '사전캠프 퀘스트[걷기반.ver]' 확인해서 공부하기
  • 사전캠프 온라인강의 수강 일정 계획 조정하기
  • 파이썬 공부 시작하기
  • 사전캠프 3일차 TIL 작성 및 제출하기
  • (그리고 여유가 있다면 개인노션페이지에 불렛저널 형태로 매일매일의 진척 상황을 볼 수 있는 데이터베이스를 추가해놓고 싶다)

 

내일도 아좌아좌 화이팅이닷!!