주말동안 들었다.
JOIN은 수평결합. 하나라도 같은 내용(컬럼)을 포함한다.
공통컬럼 = PK는 아님
full outer join MYSQL환경에서는 안돌아감 left join union right join을 같이 써줘야하는데 실무에서는 거의 안쓴다.
뭐 이것저것 배우긴 했다.
SELECT classification, SUM(CASE WHEN YEAR(acquisition_date)=2014 THEN 1 ELSE 0 END) AS '2014', SUM(CASE WHEN YEAR(acquisition_date)=2015 THEN 1 ELSE 0 END) AS '2015', SUM(CASE WHEN YEAR(acquisition_date)=2016 THEN 1 ELSE 0 END) AS '2016' FROM artworks GROUP BY classification ORDER BY classification;문제를 읽어보나 결과 테이블 예시로 보나 이 문제는 피벗 테이블로 풀어야한다는 걸 알았다. 피벗 테이블을 만들지 못해서 문제인거지.
사전캠프 강의땐 MAX(IF())를 사용해서 피벗테이블 만드는 방법을 배웠었는데, 피벗테이블 푸는법 구글링 해본 결과 SUM(CASE WHEN ~~~) 을 이용하는것이 내 기준에선 좀 더 편리해보여서 앞으론 이걸 애용해야겠다.
그리고 '3년간 추가된 소장품이 없더라도 이전 년도에 소장품이 있는 분류라면 해당 분류를 결과 테이블에 포함해주세요.' 라는 것도 처음엔 무슨 말인지 해석이 안 됐었다. 2014~2016동안 추가되지 않았다면 결과값이 0 0 0일텐데 그걸 제외하지 말라는 뜻.. 한국말 어렵네;;
SELECT a.name FROM records r INNER JOIN games g ON r.game_id=g.id INNER JOIN athletes a ON r.athlete_id=a.id INNER JOIN teams t ON r.team_id=t.id WHERE g.year>=2000 and r.medal IS NOT NULL GROUP BY r.athlete_id, a.name HAVING COUNT(DISTINCT t.id)>=2 ORDER BY a.name;JOIN을 여러개 활용해서 조건에 맞는 선수를 찾는 문제. 어떤 테이블에 JOIN할것인지 기준이 되는 테이블을 잘 찾은 다음에 그 테이블을 중심으로 JOIN을 적절하게 쓸 수 있는지를 보는 문제인듯하다. 이 문제의 경우에는 게임id, 선수id, 팀id 모두 갖고 있는 records가 중심테이블
여기선 records라는 중심테이블이 명확하기 때문에 JOIN의 순서는 상관없다. GROUP BY a.name 까지만 하면 국적이 다른 동명이인이 메달을 하나씩 딴 경우, 한 사람이 여러 국적으로 메달을 땄다고 집계될 수 있기 때문에 GROUP BY r.athlete_id 혹은 GROUP BY r.athlete_id, a.name으로 해준다.
SELECT payment_installments, COUNT(DISTINCT order_id) AS order_count, min(payment_value) AS min_value, max(payment_value) AS max_value, avg(payment_value) AS avg_value FROM olist_order_payments_dataset WHERE payment_type = 'credit_card' GROUP BY payment_installments ORDER BY payment_installments;테이블도 하나고 딱히 뭐 할게 없었기 때문에 오랜만에 쉽게 풀렸던 문제.
데이터 분석 파이썬 종합반 - 주말동안 4일차, 5일차 강의를 다 듣긴했다. 물론 모두 이해했다거나 익숙하단 말은 아니다. 단지 한번 들었다는 것에 의의를 두고 라이브 세션이 진행될때 마다 한번씩 리마인드하고 복습하는 느낌으로 공부해야겠다.
라이브 세션 파이썬 - 비주얼코드깔고 학습환경세팅했다. 잘 모르겠지만 문제없이 실습 진행되는거 보면 잘 된거겠지. 첫 시간이라 아직 힘든건 없다. 아직은 익숙한 맛.
라이브 세션 SQL - JOIN에 관해 더 알아보는 시간. 아는거 같다가도 모르는거 같다가도 애매하다. 이런 애매한 느낌이 든다는게 아직 부족하다는거겠지
solvesql 3문제 풀었다. 일단 풀긴 했지만 시간이 지나고 다음에 같은 문제가 주어졌을때 풀 수 있을지 없을지 모를거 같단 의문이 든다. 운이 좋아서 푼거 같고 어거지로 푼거 같고 막 그런 느낌. 그래도 하나씩 꾸준히 하자
SQLD 시험이 2주남았는데 이제 슬슬 SQLD 공부도 시작해야겠다...
라이브 세션 SQL 과제 풀기
solvesql 문제 풀기
SQLD 공부 다시 시작하기
#내일배움캠프 #TIL #데이터분석 #실무형데이터분석가양성과정