[내일배움캠프] 6일 차 - SQL 코드카타, Python 알고리즘 코드카타, 기초 팀 과제
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 참고 자료
조원이 찾아줌
ppt 템플릿
/