내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL
<TIL> 2023-12-21
배또가또
2023. 12. 21. 21:31
스파르타 코딩클럽 내일배움캠프 4일차
- 오늘 한 일
- SQL 코드카타 문제 7개!
- SQL 코딩테스트 블로그 작성
- 팀 프로젝트 발표 자료(노션) 수정 및 발표 스크립트 관련 회의
- 배운 것
- SQL 문제를 풀 때 회원 수라고 하면 ROW수라는 뜻이 아니기 때문에 USER_ID에 DISTINCT를 걸어주어야한다.이거랑 유사하게 문제가 나왔을 때 낚이지 말아야겠다
팀 프로젝트 유튜브 발표자료 https://www.youtube.com/watch?v=zhLTXsOgpcw
발표는 팀원 분이 수고해주셨다! 감사합니다!
아래는 내가 오늘 풀었던 문제에서 DISTINCT를 쓰지 않아 어디가 틀렸는지 1시간을 고민했던 코드였다.
SELECT YEAR,
MONTH,
GENDER,
COUNT(DISTINCT USER_ID) AS USERS
FROM
(
SELECT U.USER_ID,
DATE_FORMAT(O.SALES_DATE, '%Y') AS YEAR,
DATE_FORMAT(O.SALES_DATE, '%m') AS MONTH,
U.GENDER
FROM USER_INFO U INNER JOIN ONLINE_SALE O ON U.USER_ID=O.USER_ID
WHERE U.GENDER IS NOT NULL
) A
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3
분명히 정상 실행되고 정답예시랑 생긴 것도 똑같은데 왜지왜지? 하고 있었다가 결국 조원분께 질문을 드렸더니
아 그거~ DISTINCT 해야 되여~ 하는 순간 아.... 회원수.....! 하면서 이마를 탁 쳤다.
역시 익숙해지는 길은 길고도 험하구나
- 느낀점
- 프로그래머스 3~4단계 SQL을 슬슬 풀기 시작하니까 한 문제 푸는데도 시간이 꽤 걸리고 있다. 앞으로도 꾸준히 하루에 3문제씩이라도 푸는 습관을 유지해야겠다.