본문 바로가기
Data/[스파르타 내일배움캠프]

[TIL]사전캠프 학습 3일차

by MIN_JOON 2024. 3. 27.
  • Subquery
    • Query 안에 또다른 Query문이 들어갈 수 있으며 이것을 Subquery라고 함
    • select, from, where절에 모두 사용 가능하며 from절에 사용할 경우 별칭(alias)을 설정해주어야 함
#from절 Subquery
select column1, column2
from
	(
    select column1, column2
    from table1
    ) table1
    
#where절 Subquery
select column1, column2
from table1
where column1 = (select col1 from table2)
  • Join
    • 두 개 이상의 테이블을 공통 컬럼을 기준으로 연결(SQL문 작성시 각 테이블의 별칭 설정)
    • 기본적으로 엑셀의 vlookup과 유사
    • left join, inner join, right join등이 존재
#join의 기본 구조
select 조회할 컬럼
from table1 t1
join table2 t2 on t1.공통컬럼명 = t2.공통컬럼명
  • SQL을 이용한 Pivot table
    • Pivot table: 2개 이상의 기준으로 데이터를 집계할 때, 보기 쉽게 배열하여 보여주는 것
#Pivot table 예시

select 
	cuisine_type,
	max(if(age='10대',order_count,0)) '10대',       #Pivot table 작성
	max(if(age='20대',order_count,0)) '20대',
	max(if(age='30대',order_count,0)) '30대',
	max(if(age='40대',order_count,0)) '40대',
	max(if(age='50대',order_count,0)) '50대'
from
(
select 
	t1.cuisine_type,
	case when t2.age between 10 and 19 then '10대'   #Subquery 기본 테이블 생성
		 when t2.age between 20 and 29 then '20대'
		 when t2.age between 30 and 39 then '30대'
		 when t2.age between 40 and 49 then '40대'
		 when t2.age between 50 and 59 then '50대'
	 end age,
	 count(*) order_count
from food_orders t1
join customers t2 on t1.customer_id = t2.customer_id
group by 1,2
) table1
group by 1

기본 테이블
Pivot table 작성 후

  • Window Function
    • 각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어줌
    • Window Function 예시
      1. SUM() OVER: 그룹별 합계 계산
      2. AVG() OVER: 그룹별 평균 계산
      3. RANK() OVER: 순위 생성(중복값 발생되면 갯수만큼 건너 뛰고 다음 순위 부여
      4. DENSE_RANK() OVER: 순위 생성(중복값이 발생해도 다음 순위를 연속적으로 부여)

SQL로 Pivot table 만드는 건 처음 해봤는데 이해하는데 꽤 오래 걸렸다....

SQL 강의 끝났으니 내일부턴 Python 강의로!

'Data > [스파르타 내일배움캠프]' 카테고리의 다른 글

[TIL]사전캠프 학습 5일차  (4) 2024.03.29
[TIL]사전캠프 학습 4일차  (0) 2024.03.28
[TIL]사전캠프 학습 2일차  (2) 2024.03.26
[TIL]사전캠프 학습 1일차  (2) 2024.03.25
스타터 노트  (2) 2024.03.25