SQL Basic 실습 1강

1893 단어 SQL BasicSQL Basic

오늘부터 매주 SQL 기초 실습을 할 예정입니다.
이번 데이터 셋은 Member와 sales인데요.
Member는 Mem_no, GD, Channel_type 칼럼을 사용할 예정이고
Sales는 Order_no, Mem_no, Sales 칼럼을 사용할 예정입니다.

1. 가입 채널별 가입자수를 알고싶어요.

구상방법

  1. Output 구상하기
  2. 추출 칼럼 : 가입 채널(Channel_type), 가입자수(count(Mem_no))
  3. 추출 DB : Member
  4. 조건 : X
  5. 집계 조건 : 가입 채널

Result

SELECT Channel_type, count(Mem_no)
  FROM Member
 GROUP
    BY Channel_type
유의사항 : 집계 조건을 무시할 수 있음

1-1. 채널별 여자, 남자 가입자수 같이 뽑고 싶어요.

Solution

  • Solution : count 함수에 case when을 사용해보자
  • 내가 실수한 요인 : Join을 사용해서 성별별 가입자수를 뽑으려 했다

Result

SELECT Channel_type
      ,count(Mem_no)
      ,count(Case when GD = 'F' then Mem_no end)
  FROM Member
 GROUP
    BY Channel_type

1-2. 여자+남자 합계와 총 합계가 달라요.

Solution

  • Solution : GD 칼럼을 집계해보자

Result

Null값이 포함되어 있어, 총 합계와 달랐다.

SELECT GD, count(Mem_no)
  FROM Member

2. 성별별로 매출을 뽑아내고 싶어요

구상방법

보통 Sales table에는 MEM_NO가 FK(foreign key)로 들어가 있기 때문에 Member table과 Sales table을 조인하여 답을 도출한다.

Result

SELECT GD, SUM(SALES)
  FROM Member A
  LEFT
  JOIN Sales B
    ON A.Mem_no = B.Mem_no
 GROUP
    BY GD
참고할 사항 : Sales를 Main으로 활용안한 이유는 무엇일까?
유의사항 : 일반적으로 조인을 할 때에는 테이블마다 별칭을 부여해야한다.

좋은 웹페이지 즐겨찾기