[분석 실전] SQL JOIN 심화. where절 추가하기, 테이블 연결하기 구문 팁!
안녕하세요.
이번 포스팅에서는, JOIN을 통해서 여러 테이블을 연결하는 구문 상세팁을 준비했습니다.
실무 데이터 분석을 하신다면 꼼꼼히 봐주세요
JOIN 꿀팁!
1. 구매 고객 성별에 따른 매출액 분석
(구매금액 높은 순으로 내림차순)
transaction 테이블과 customer 테이블을 join합니다!
select cc.sex, sum(tot_amt) as sum_tot_amt
from transactions_amt_csv tac
join customers_csv cc on tac.custid =cc.custid
group by 1
order by 2 desc
성별=2(여성)의 매출액이 더 높네요(매출액별로 내림차순 정렬을 추가했습니다)
2. 성별, 생년별 매출액 구하기
(매출액 높은순으로 내림차순)
select birth, sex, sum(tot_amt) as sum_amt
from customers_csv cc
join transactions_amt_csv tac on cc.custid =tac.custid
group by 1,2
order by 3 desc
78년생 여성이 가장 많은 매출액을 발생했네요
(참고로 위 데이터는 가상의 데이터입니다. 1900년생은 없겟..죠;;)
주의할 점!!
1) user id가 null 일때는 join이 안됩니다. 해당 값은 날아가버립니다!!
2) join의 key가 된 custid를 select에 넣는다면?
위 코드는 실행이됩니다 but!
위 코드는 에러가 발생하죠.
왜냐하면??
-> join을 하려는 두개 테이블에 "모두" cusid칼럼이 있기 때문입니다
(그래서 custid를 key로 잡아 join을 했죠)
어느 테이블에서 custid를 가져올지를 지정해주면, 이 문제는 해결됩니다
*이 경우 hobby 칼럼은 customer 테이블에만 존재하기 때문에,
별도로 테이블 명을 지정해 주지 않아도 정상 작동됩니다
[join의 위치 및 문법]
select 컬럼명
from 테이블명 (as) a
join 테이블명2 (as) b on a.컬럼명=b.컬럼명
* 두개 이상의 테이블에 동일한 컬럼명이 있을때
select나 where절에 그 컬럼을 사용할 경우, 'a.컬럼명'처럼 어떤 테이블에서 가져올 지 명시해줍니다
3. join에서 where절을 쓸 때
1970년생이 구매한 제품의 브랜드카테고리는?
먼저, 아래코드 결과를 확인하면,
브랜드, 생년, 총매출액이 나옵니다
select brd_nm, birth, sum(tot_amt) as sum_tot_amt
from customers_csv cc
join transactions_category_csv tcc on cc.custid =tcc.custid
join transactions_amt_csv tac on tcc.custid =tac.custid
group by 1,2
이 중 1979년 생의 매출액만 보고싶다면? where!
위 코드에서 where절을 추가해 1979년생의 소비만 조건화하여 추출합니다
select brd_nm, birth, sum(tot_amt) as sum_tot_amt
from customers_csv cc
join transactions_category_csv tcc on cc.custid =tcc.custid
join transactions_amt_csv tac on tcc.custid =tac.custid
where birth = '1979'
group by 1,2
order by 3 desc
select 컬럼명
from 테이블명 (as) a
join 테이블명2 (as) b on a.컬럼명=b.컬럼명
where 조건절(group by)(order by)
SQL쿼리는 굉장히 직관적이라, 몇번 따라해보면 크게 어렵게 생각하실 필요가 없어요.
이제 남은 몇가지 중요한 파트들도 열심히 진행해볼게요
실무에서 데이터분석하기! 빠르게 진행해볼게요~
데이터 분석 실무 초고속 정복하기!
더 좋은 꿀팁들을 알고 계시면 공유해주세요!^^