TIL 20일차 : JOIN활용, DATEDIFF(날짜차)
도전한 점
- SQL 코드카타 5문제 풀이 완료
- 기초 프로젝트 팀회의 : 일정 공유
- 데이터분석 강의 복습 : 블로그에 내용 추가
- 데이터분석 3주, 4주차 과제 풀이
1. SQL : 코드카타 31~35
- 실습 31. 오랜 기간 보호한 동물 (1) : LEFT JOIN + IS NULL, LIMIT
SELECT I.NAME,
I.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.DATETIME IS NULL
ORDER BY 2
LIMIT 3
- 실습 32. 카테고리 별 도서 판매량 집계 : SUM(COUNT 아님⭐), LEFT JOIN
- 헷갈린 점은 출판일자가 아니라 판매일자 별 카테고리를 집계하는 것이다.
SELECT B.category CATEGORY,
SUM(S.sales) TOTAL_SALES
FROM BOOK B LEFT JOIN BOOK_SALES S ON B.BOOK_ID=S.BOOK_ID
WHERE DATE_FORMAT(SALES_DATE, '%Y-%m') = '2022-01'
GROUP BY 1
ORDER BY 1
- 실습 33. 상품 별 오프라인 매출 구하기 : SUM, 사칙연산(*), INNER JOIN(계산해야 하니까)
SELECT P.product_code,
SUM(P.price * O.sales_amount) SALES
FROM PRODUCT P INNER JOIN OFFLINE_SALE O ON P.PRODUCT_ID=O.PRODUCT_ID
GROUP BY 1
ORDER BY 2 DESC, 1 ASC
- 실습 34. [관리자의 실수] 있었는데 없어진 데이터 찾기 : >, LEFT JOIN
SELECT I.ANIMAL_ID,
I.NAME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME
- 실습 35. 오랜 기간 보호한 동물(2) : ORDER BY에 사칙연산이 된다고? 이게 된다고? 신기하다.
- 입양갔는데 + 보호기간이 가장 길어야 함 : (일단) INNER JOIN으로 해결함.
- 보호기간이 길다의 의미 : 입양간 날짜 - 보호 시작한 날짜 값이 커야 되는데?
- 그리고 출력하는 게 아니니까 ORDER BY로 정렬만 하고 싶음. -> 됨.
- 값이 크다는 것은 내림차순이다. -> 일단 쳐보고 될까 했는데 정답이다.🫤🫠
## 나의 작성 코드
SELECT I.ANIMAL_ID,
I.NAME
FROM ANIMAL_INS I INNER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
ORDER BY (O.DATETIME - I.DATETIME) DESC
LIMIT 2
- 새로운 함수 : DATEDIFF(큰값, 작은값)⭐, INNER JOIN=JOIN, 반올림은 검색하다가 나와서 정리함.
- 또 다른 사람들은 DATEDIFF 컬럼을 만들고 서브쿼리를 줬는데 ORDER BY하면 더 간단하다.
## 참고 작성 코드
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2
- ROUND(숫자) : 반올림
- ROUND(숫자, 1) : 소수점 1번째까지
- TRUNCATE(숫자, 0) : 소수점 자르기
- 다른 분은 RANK 함수를 사용하여 코드를 작성했는데, 그 김에 RANK 내용을 다시 복습하자.
- GROUP BY, PARTITION BY 의 차이 : 전자는 중복값을 모두 합치고, 후자는 그대로 두고 구역만 나눈다.
2. 데이터분석 복습 및 과제 풀이 : 목표 3 참고
https://specialda.tistory.com/29
TIL 12일차 : 실전 데이터 분석 (3주차~5주차)
도전한 점 데이터분석 강의 3주차~5주차 훑기 : 실전 데이터 흐름을 익혔다. (보충) 데이터 분석 3주차~5주차 복습 : 다시 강의 코드 정리하기 목표 1~7은 강의내용, 목표 8은 스스로 과제해보기 핵
specialda.tistory.com
3. 데이터분석 4주차 과제 풀이
https://specialda.tistory.com/41
데이터분석 4주차 코드 정리
1. 데이터분석 4주차 과제 - 증명하고 싶은 가설 설정 : 할인율이 높으면 높을 수록 결제 전환율도 높을 것이다. # 사용선언 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 폰트 깨짐 방지
specialda.tistory.com
좋았던 점
- 코드카타 30번대로 넘어오니 join문을 활용하기 시작했다. 그리고 오늘은 datediff라는 날짜차이를 구하는 함수를 배웠다. 나는 order by 해서 날짜 컬럼끼리 직접적으로 빼줬는데 datediff를 활용해서 datediff(큰값, 작은값) 이렇게 하는 방법도 있다는 걸 배웠다. 뭐가 더 간단한지는 비슷한 것 같지만 알아두면 좋겠다.
- 데이터분석 강의가 처음 들을 땐 드르렁인데 반복해서 들으니 과제까지 풀 수 있을 정도가 되었다. 하지만 실전에 적용하기엔 아직 무리가 있으니 반복하고 또 반복하는 게 중요하겠지.
아쉬운 점
- 파이썬은 왜 이렇게 길고 어려운 걸?까?🫤🫠
잊지말 점
- DATEDIFF(큰값, 작은값) 그리고 판다스를 이용한 데이터 분석의 흐름 정도 기억하기.
- 내일 팀회의는 12시 30분 입니다.
시도할 점
- 자꾸 길어지니까 앞으로 링크를 이용해서 TIL을 정리하기.
- 데이터분석 4주 과제를 혼자 해보고 파이썬 1장 정리하고 자기!
막간 사담
- 오늘따라 오늘 유.독. 아침에 일어나서 눈을 뜨는데 푹- 잔 거 같지 않고 그냥 밤에 눈 감았다 뜬 기분? 기묘한 현상을 경험함. 지금 생각해도 너무 싫다. 놀란 마음을 진정시키려고 1시간만 더 자고 싶었는데 참았음.