window function, with
리스트, 튜플, 딕셔너리
SELECT region AS Region, sum(case when category='Furniture' then 1 else 0 end) AS Furniture, sum(case when category='Office Supplies' then 1 else 0 end) AS 'Office Supplies', sum(case when category='Technology' then 1 else 0 end) AS Technology FROM records GROUP BY region ORDER BY region;문제를 보나 결과 테이블 예시로 보나 이 문제는 피벗 테이블로 풀어야한다는 걸 알았다. 하지만 틀렸다.
SELECT region AS Region, COUNT(DISTINCT CASE WHEN category='Furniture' THEN order_id END) AS Furniture, COUNT(DISTINCT CASE WHEN category='Office Supplies' THEN order_id END) AS 'Office Supplies', COUNT(DISTINCT CASE WHEN category='Technology' THEN order_id END) AS Technology FROM records GROUP BY region ORDER BY region;문제에 주문량이라고 주어져있길래 난 수량을 생각하고 SUM을 사용했는데 주문의 수를 구해야하는것이었다. 문제 독해력이 부족한가보다. 어쨌든 중복이 있을 수 있으니 COUNT(DISTINCT ~~~) 를 사용해야한다.
문제 1 (프로그래머스 - 오랜 기간 보호한 동물(1))
SELECT i.name, i.datetime FROM animal_ins i LEFT JOIN animal_outs o ON i.animal_id=o.animal_id WHERE o.animal_id IS NULL ORDER BY datetime LIMIT 3
문제 2 (프로그래머스 - 조건에 맞는 사용자와 총 거래금액 조회하기)
SELECT USER_ID, NICKNAME, SUM(price) AS 'TOTAL_SALES' FROM used_goods_user u INNER JOIN used_goods_board b ON u.user_id=b.writer_id WHERE b.status='done' GROUP BY u.user_id HAVING SUM(price)>=700000 ORDER BY SUM(price);
문제 3 (프로그래머스 - 보호소에서 중성화한 동물)
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME FROM animal_ins i INNER JOIN animal_outs o ON i.animal_id=o.animal_id WHERE i.SEX_UPON_INTAKE LIKE '%Intact%' AND o.SEX_UPON_OUTCOME NOT LIKE '%Intact%' ORDER BY i.ANIMAL_ID
먼저 아침에 라이브 세션 시작하기 전에 solvesql 한 문제 풀었다. 역시나 문제독해가 쉽지 않다. 후.. 빡대가린가
라이브 세션 파이썬 - 리스트, 튜플, 딕셔너리에 대해 배웠다.
라이브 세션 SQL - Window function과 with구문에 대해 배웠다. window function은 SQLD에서 였나 한번 들었던 기억이 있어서 막 어렵진 않았다. with구문은 처음 배우는 거라서 조금 어색했지만 다른 연습문제를 풀다보면 with를 활용하는 답들이 있어서 뭔가 낯이 익은 느낌이었다. 물론 연습문제를 풀땐 with를 안 배웠었기 때문에 사용하진 않았었다. 이제 익숙해지도록 하겠다.
하 그리고 라이브 세션에서 배운 내용들을 오늘의 학습에 쓰려하다가 오늘 배운게 많아서 써야할 내용도 많고, JOIN 6문제 푸느라 지쳐서 귀찮아서 쓰기 싫다. 오늘은 패스ㅎ
solvesql 한 문제 푸는 시간과 라이브 세션 시간을 제외하면 오늘 모든 시간을 JOIN 과제 6문제 푸는데 다 썼다; 눈깔 빠질거 같다. 특히 6번...! 그래도 뇌빼고 문제가 시키는대로 하니까 풀리긴 하더라. 아무래도 튜터님이 출제한 연습문제이다 보니 조건이 너무 친절하다. 코딩테스트나 실무에서는 저렇게 친절하게 조건이 주어지지 않을테니 문제해석능력과 대응능력을 키워야될거 같다는 생각이 든다.
내일은 라이브 세션이 적기 때문에 SQLD 복습을 시작하던지 아직 남은 강의를 마저 듣던지 해야겠다. 아니면 오늘의 학습에 배운 내용정리?
solvesql 문제 풀기
라이브 세션 파이썬
#내일배움캠프 #TIL #데이터분석 #실무형데이터분석가양성과정