Daily plan
🌞오전
- 9시 기초과제 추가 발제
- 10시 파이썬 라이브세션 3회차
- 파이썬 개인 과제
🔥 오후
- 코드카타 SQL 3문제
- 빅분기 4과목
- 데이터전처리&시각화 강의 1, 2주차
🌝 저녁
- 아직 못한 것들 마무리
- 데일리 스크럼 + TIL 제출
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE,"%Y-%m-%d") REVIEW_DATE
FROM REST_REVIEW R LEFT JOIN MEMBER_PROFILE M ON R.MEMBER_ID=M.MEMBER_ID
WHERE R.MEMBER_ID = (SELECT MEMBER_ID
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY COUNT(1) DESC
LIMIT 1)
ORDER BY R.REVIEW_DATE, R.REVIEW_TEXT
일단 이렇게 풀어서 정답이 맞긴 했는데,
만약 리뷰수가 가장 많은 사람이 1명이 아니라 공동1등으로 여러 명이라면 문제가 생길 수도 있을 것 같다.
차라리 RANK함수를 이용해 새로운 컬럼을 만들고, 이를 조인해서 1등에 해당하는 MEMBER_ID를 모두 선택할 수 있게 하는 게 나을 지도...?
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE,"%Y-%m-%d") REVIEW_DATE
FROM REST_REVIEW R
LEFT JOIN MEMBER_PROFILE M ON R.MEMBER_ID=M.MEMBER_ID
LEFT JOIN (SELECT MEMBER_ID,
RANK() OVER(ORDER BY COUNT(1) DESC) AS RANK_CNT
FROM REST_REVIEW
GROUP BY MEMBER_ID) RC
ON R.MEMBER_ID = RC.MEMBER_ID
WHERE RC.RANK_CNT=1
ORDER BY R.REVIEW_DATE, R.REVIEW_TEXT
RANK함수를 이용해서 코드를 다시 작성해봤는데 충격적이었다. 첫 번째 코드로 했을 때와 다른 결과가 나왔는데 둘다 정답 처리됨...!!!!
실제로 REST_REVIEW 테이블을 다시 확인해보니 리뷰 작성수가 가장 많은 사람은 3명이었다.
첫번째 코드에서는 그 중 한명의 리뷰들만 추출했는데 정답처리 된 거였음..!
코드를 두번째 방식으로 다시 작성해보길 잘 한 것 같다. 역시 찝찝한 이유가 있었어...
위에서 말한 이유대로 WHERE절에서 LIMIT1을 사용한 서브쿼리를 작성한 첫번째 방식은 오답이었다.
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE "2022-03%"
UNION ALL
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE, PRODUCT_ID, NULL USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE "2022-03%"
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
OFFLINE_SALE 테이블에서 USER_ID를 NULL로 지정하라는 조건이 있었는데,
"NULL"이라고 쿼리를 작성해서 자꾸 오답이 나왔다.
이렇게 쓰면 문자열 형식이 되니까 NULL은 그냥 NULL로 써야 됨!
SELECT UB.TITLE,
UB.BOARD_ID,
UR.REPLY_ID,
UR.WRITER_ID,
UR.CONTENTS,
DATE_FORMAT(UR.CREATED_DATE,"%Y-%m-%d") CREATED_DATE
FROM USED_GOODS_BOARD UB
INNER JOIN USED_GOODS_REPLY UR
ON UB.BOARD_ID = UR.BOARD_ID
WHERE UB.CREATED_DATE BETWEEN "2022-10-01" AND "2022-10-31"
ORDER BY UR.CREATED_DATE, UB.TITLE
게시판 정보가 담긴 USED_GOODS_BOARD 테이블과 댓글 정보가 담긴 USED_GOODS_REPLY 테이블이 있는데, 두 테이블의 컬럼명이 겹치는 게 많아서 헷갈리지 않게 주의해야하는 문제였다.
이제 레벨5는 4문제 남았다! 내일까지 끝내버려야지ㅎㅎ
데이터 전처리와 시각화는 왜 해야할까?
-> 데이터를 잘 분석하고 전달하기 위해서
-> "설득하기 위해서"
데이터 전처리와 시각화를 하기 전에 "어떤 목적으로 데이터를 분석할 것인지"를 먼저 고민해야 함
복잡하고 많은 양의 데이터를 다루는 과정에서 가장 큰 목적이 무엇이었는지 잊거나 방향을 잃을 수 있음
이러한 착오를 예방하려면 사전에 데이터를 어떻게 분석할 지 미리 설계하는 습관이 필요!
SQL 코드카타하고 파이썬 개인과제 찌끄리다보니까 시간이 순삭되었다.
빅분기 공부 좀 더 하다가 자야할 것 같음ㅜ.ㅜ
파이썬 라이브세션 내용도 정리해야 하는데,, 왜 자꾸 할일들이 밀리는 기분인지 모르겠다.
중간중간 딴짓만 안해도 좋을 것 같긴한데 같은 자리에서 몇시간을 앉아있어서 그런지 집중력이 따라주질 않는다. 특히 4시부터가 엄청난 고비임.. 오늘은 냅다 엎드려서 잤는데 현수님한테 걸렸다..ㅋㅋㅋ 그걸 봤다니,, 민망^^:;
내일은 꼭 개인과제 8번을 다 풀어야겠다! 화이팅 (ノ*ФωФ)ノ