[내일배움캠프] 데이터 트랙/본 캠프

[내일배움캠프] 6일 차 - SQL 코드카타, Python 알고리즘 코드카타, 기초 팀 과제

554083460 2025. 5. 19. 21:00

 

 

 

 SQL 코드카타

 

 

문제 15

NULL 처리하기

동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해 주세요. 이름의 없는 동물의 이름은 "No name"으로 표시해 주세요.

 

 

내 답안 1

SELECT ANIMAL_TYPE,
       REPLACE(NAME, 'NULL', 'No name'), -- REPLACE
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

내 답안 2

SELECT ANIMAL_TYPE,
       IF(NAME IS NULL, NAME, 'No name'), --IF
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

내 제출 답안

SELECT ANIMAL_TYPE,
       COALESCE(NAME, 'No name'), -- COALESCE
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

틀린 이유

1. 답안 1에서 

NULL을 문자열처럼 생각하고 REPLACE로 문자열 바꾸기를 시도했다.

REPLACE는 문자열을 문자열로 바꾸는 함수다.

NULL은 '값이 없음'을 나타낼 뿐 문자열이 아니다.

 

2. 답안 2에서

'NAME IS NULL'을 조건으로 사용했다.

IF(condition, A, B)의 의미는 condition일 때 A 출력, condition 아닐 때 B 출력이라는 의미다.

문제의 의도대로 출력하려면 IF(NAME IS NOT NULL, NAME, 'No name')으로 해야 한다.

 

개선점

1. [MySQL] REPLACE

REPLACE(column_name, 'string_A', 'string_B')

 

2. [MySQL] NULL일 때 다른 값으로 대체하기

1) IF

IF(condition, value_if_true, value_if_false)

 

2) COALESCE

COALESCE(column, NULL일 때 대체값)

 

참고 자료

https://www.w3schools.com/sql/func_mysql_if.asp

https://www.w3schools.com/sql/func_sqlserver_replace.asp

 


 

 

문제 18

DATETIME에서 DATE로 형 변환

ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요.

이때 결과는 아이디 순으로 조회해야 합니다. 

 

 

내 답안

SELECT ANIMAL_ID,
       NAME,
       DATE(DATETIME) -- DATE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

>
2013-03-24 00:00:00

 

내 최종 답안

SELECT ANIMAL_ID,
       NAME,
       DATE_FORMAT(DATETIME, '%Y-%m-%d') -- DATE_FORMAT
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

틀린 이유

DATE 함수가 '연-월-일'만 출력하는 것으로 알고 있었다.

이 문제의 경우, '연-월-일'만 출력해야 하는데

DATE 함수를 쓰니 '연-월-일 00:00:00'과 같이 출력되었다.

 

개선점

[MySQL] DATE FORMAT 사용

 

새롭게 알게 된 것

[MySQL] DATE FORMAT


설명

날짜, 시간 등을 특정 포맷으로 변환해줌

 

문법

DATE_FORMAT(column, '%y') 또는

DATE_FORMAT('2014-05-15 14:30:25', '%Y-%M-%d')

 

참고자료

https://www.w3schools.com/sql/func_mysql_date_format.asp

 

 

 

 Python 알고리즘 코드카타

 

 

문제 14

약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

 

내 답안

def solution(n):
    answer = 0
    for num in range(1, n+1):
        if n % num == 0:
            answer += num
    return answer

 

 

개선점

약수만 남기는 아이디어

1) 정수 n의 약수 찾아야 함

2) n을 1부터 n까지의 숫자로 나눈다. (for loop)

3) 나눴을 때 나머지가 0인 경우 약수 (n % )

 

 

 

 기초 팀 과제 - 이커머스 이벤트 히스토리

 

 

이커머스 이벤트 히스토리

https://www.notion.so/teamsparta/1f82dc3ef5148149a96af099d5827a03

 

 

주제 선택 이유

: 이커머스 도메인에 관심있는 조원들이 많았다. 조원들이 데이터를 보고 비교적 빠르게 여러 비즈니스 인사이트를 떠올릴 수 있었다. 비즈니스에 기여하는 것이 데이터 분석의 주요 목표인 만큼, 좋은 연습이 될 것이라고 생각했다. 구체적으로는, 데이터 리터러시 강의의 내용대로 과제를 진행할 수 있겠다고 생각했다.

 

세부 주제

: 시간대별 접속률과 구매율을 분석해서

접속률과 구매율이 높은 구간에는 마케팅을 강화하는 전략,

접속률과 구매율이 낮은 구간에는 이를 끌어올릴 수 있는 마케팅 전략

두 가지의 방향으로 마케팅 전략을 도출하고자 합니다.

 

분석 순서

 

1. EDA

EDA? 수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정입니다.

 

조원들의 의견

  • 이벤트 기간 중 어떤 요일, 어떤 시간대에 가장 주문 건이 많았나?
  • 어느 시간대에 유저 접속 수가 많았나?
  • 이벤트 타입 별 비교
  • 브랜드별 이벤트 타입을 비교해서, 어떤 브랜드가 경쟁력이 있는지 분석.
  • 소비자가 본 제품(view) 또는 카트에 담은 제품(cart)이 실제 구매(purchase)로 이어지는 비율
  • 소비자가 카트에 담은 제품(cart)을 제거한(remove_from_cart) 비율

 

2. 환경 설정

DeBeaver에 데이터 불러오기

19년 12월 ~ 20년 2월까지 5개의 테이블 불러오기

 

우리 조의 세팅

데이터 가져오기 시,

tables mapping
product_id  varchar(255)
category_id  varchar(255)

으로 수정함

 

(원래라면 데이터 수집 단계 있었겠지만, 주어진 자료로 진행했으므로 생략)

 

3. 문제 정의

중형 화장품 온라인 스토어의 5개월(2019년 10월~2020년 2월) 간의 행동 데이터를 분석하여

앞으로의 이윤을 높일 수 있는 마케팅 전략을 수립하고자 한다.

 

또는

 

중형 화장품 온라인 스토어의 5개월(2019년 10월~2020년 2월) 간의 행동 데이터를 살펴본 결과

접속률과 구매 전환율이 각각 n%, m%로 나타났다.

접속률을 x%, 구매 전환율을 y%로 증가시키기 위해 어떤 마케팅 전략을 수립할지 고민하고자 한다.

(데이터 리터러시 참고)

 

1) 문제 정의 - 로직 트리

 

4. 데이터 전처리

1) NULL 어떻게 처리할지?

 

5. 데이터 분석

분석 방법 중 택1

Retention Ratio (재방문율)

서비스를 사용한 사람이 다시 서비스를 사용하는 비율 %

 

Funnel (퍼널)

유저들이 어디서 이탈하는가?를 확인하기 위한 구조화

 

AARRR

  • Acquisition: 유입
  • Activation: 활성화
  • Retention: 재방문(재구매)
  • Revenue: 수익
  • Referral: 추천

 

6. 분석 결과

시간대별 접속율을 구한다.

쿼리

결과

- 접속률 = 시간대별 접속자 수 / 총 접속자 수 * 100

시간대별 구매율을 구한다.

쿼리

결과

- 구매 전환율: 고객이 방문한 후 구매까지 전환됐는지의 여부

구매 전환율 (구매율) = 구매 고객 수 / 방문 고객 수 * 100

 

7. 결론

 

 

참고 자료

 

데이터 리터러시 강의 자료

https://teamsparta.notion.site/1-1c02dc3ef51480329f2bf963b4d6ff43

 

접속율

시간대별 방문 통계 구하기 https://devlogjoy.tistory.com/23

 

구매 전환율

https://docs.tosspayments.com/resources/glossary/conversion

 

코스메틱 이커머스 매출 개선 위한 데이터 분석

https://www.taeyoung-portfolio.com/1e92d926-6627-808b-822f-fffe61522462?utm_source=chatgpt.com

 

 

ppt 참고 자료

조원이 찾아줌

https://www.slideshare.net/slideshow/2024-01-2024-industrial-reportecommerce/266963106?utm_source=chatgpt.com#7

 

ppt 템플릿