본문 바로가기
SQL

1/2 - SQL 심화학습 5일차 & 개인과제 집중

by PETRA_94 2024. 1. 2.

[기억할 개념]

1. 전체 고객별 총 구매 수량&총 구매 금액

SQL JOINS 문법 - LEFT / LEFT OUTER JOIN의 차이점
○ LEFT JOIN: 동일한 컬럼으로 하나로 합쳐지고, 왼쪽 A의 모든 데이터를 포함하나, B의 데이터는 Null로 표시
○ LEFT OUTER JOIN: A와 B 테이블 공통 데이터 가져오기 (=INNER JOIN)
  *ex)
SELECT *
from A left outer join B on A.id=B.id
where B.id is not null

위 개념 사진 출처: https://yoo-hyeok.tistory.com/98

SELECT A.컬럼 '컬럼지정명'
       IFNULL (A.컬럼, '-') '컬럼지정명'
       IFNULL(SUM(B.수량 관련 컬럼명), 0) '컬럼지정명'
       IFNULL(SUM(B.수량 관련 컬럼명*C.가격 관련 컬럼명), 0) '컬럼지정명'
FROM 테이블명
LEFT OUTER JOIN Orders 'A' ON C.Customer_id=A.Customer_id
LEFT OUTER JOIN OrderDetails 'B' ON C.Customer_id=A.Customer_id
LEFT OUTER JOIN Products 'C' ON A.Product_id=C.Product_id
GROUP BY C.이름 관련 컬럼명
ORDER BY SUM(B.수량 관련 컬럼명*C.가격 관련 컬럼명), DESC

    *위 코드 자료 출처: https://brunch.co.kr/@phapark/20

 

 

 

[개인과제]

  • 중급 - 6번

  > 내가 쓴 과제 제출 코드
: 주문 금액 합계만 구하고, 그 다음, 매출액 순위를 구하지 못함 
  심지어 튜터님 피드백 받은 코드임
  여기서 rank 함수 넣으면 실행 안됨

select order_id, Category, sum(Amount)
from order_details 
group by 1, 2

 

 

  • 고급 - 7번

 

  > 내가 쓴 과제 제출 코드
: 3개 테이블을 합치는 문제

 각 주별 주문 총 금액 & 이익만 계산함 그 다음부터 손도 못댐

select lo.order_id,
       lo.State,
       sum(od.Amount),
       sum(od.Profit)
from list_of_orders lo inner join order_details od on lo.order_id=od.order_id
group by 1,2
order by lo.State

 

 

  • 고급 - 8번

 

  > 내가 쓴 과제 제출 코드
: 2개의 테이블을 합치는 문제

  고객별 총 구매액, 총 주문 횟수는 구했으나, 주문 간 평균 일수? 감이 안 잡힘

  LTV 계산은 사실 엑셀로 돌리면 끝나는데, 코드로 돌리자니 혼돈의 도가니임

select a.order_id as '주문번호',
	   a.order_date as '주문일자',
	   a.CustomerName as '고객명',
       b.Profit as '수익',
       sum(b.Amount) as '합계금액',
       sum(b.Quantity) as '합계수량'
from list_of_orders a left join order_details b on a.order_id=b.order_id 
group by a.CustomerName
order by sum(b.Amount) desc

 

 

 

[SQL 특강]

 

SQL 처음부터 끝까지 | Built with Notion

✔️ GIT에서 코드 및 실습 데이터를 확인하실수 있습니다.

teamsparta.notion.site

  • 사실 초기 함수부터 설명해 주셔서 누워서 잠(ㅋㅋㅋㅋㅋㅋㅋ)
  • 차라리 중급~고급 함수를 맛보기로 설명해주시고, 데이터분석가 직무?나 위의 그림을 좀 더 상세히 설명주셨더라면 흐름이 좋았을 듯
  • 그래도 튜터님이 본인 스스로 검은머리 외국인이라고 하셨는데,
    현업 팀장님으로써 많은 걸 알려주려고 하다 보니 열심히 하신 것 같아 보기 좋았음

 

 

[배운 점]

  • 생각보다 중급 문제에서 많이 막혔다. 특히 6번부터 쿼리를 초반 부분만 쓸 수 있어서 속상했다.
  • SQL이 그나마 코딩 문법 중에 쉬운 편이라고 하는데, 나는 역시 이쪽으로는 아닌가..?
    살짝 자신감이 떨어지는 오늘 하루
  • 개인과제 6~8번은 초반 값만 구하고, 그 다음부터 손을 대지 못해서 내일 해설 강의를 잘 들어야 할 것 같다.
  • 개인과제에 힘을 쏟았더니 몹시 피곤하다. 개발자들은 밤을 샌다는데 어떻게 하지..?
  • 마케터가 SQL 기초를 알고 엔지니어나 개발자들을 덜 귀찮게 한다는 점에서 나 자신을 칭찬해주고 대견해하자!! 아자 아자!! 마케팅은 내가 짱이다!
  • 그리고 데이터를 직접 추출해나가니 Insight를 얻을 수 있는 부분이 매우 많다.