SQL Basic 실습 1강
오늘부터 매주 SQL 기초 실습을 할 예정입니다.
이번 데이터 셋은 Member와 sales인데요.
Member는 Mem_no, GD, Channel_type 칼럼을 사용할 예정이고
Sales는 Order_no, Mem_no, Sales 칼럼을 사용할 예정입니다.
1. 가입 채널별 가입자수를 알고싶어요.
구상방법
- Output 구상하기
- 추출 칼럼 : 가입 채널(Channel_type), 가입자수(count(Mem_no))
- 추출 DB : Member
- 조건 : X
- 집계 조건 : 가입 채널
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으로 활용안한 이유는 무엇일까?
유의사항 : 일반적으로 조인을 할 때에는 테이블마다 별칭을 부여해야한다.
Author And Source
이 문제에 관하여(SQL Basic 실습 1강), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@swq4857/SQL-Basic1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)