CODING/스파르타 내일배움캠프 TIL

TIL 4일차_2024.12.13(금)

codingTrip 2024. 12. 13. 17:11

엑셀보다 쉽고 빠른 SQL 5주차

1) pivot table 만들기

피벗 테이블은 정말 실제 회사에서 자주 사용하는 엑셀 기능이다.

그래서 더욱 집중해서 공부하기 시작했다.

 

강의 도중 피벗 테이블 쿼리를 만들 때,

max로 묶어주는지 이해가 가지 않아서 따로 검색을 해보았다.

-> 이미 서브쿼리 테이블에서 그룹에 따라 나눠서 값을 정리한 상태이기 때문에

(그 그룹에서는 유일한 값 ex)한국인 남자, 한국인 여자 등)

max로 묶어주어도 무방하다고 이해를 했다.

 

숙제

select cuisine_type,
       max(if(age_group=10,cnt_order,0)) "10대",
       max(if(age_group=20,cnt_order,0)) "20대",
       max(if(age_group=30,cnt_order,0)) "30대",
       max(if(age_group=40,cnt_order,0)) "40대",
       max(if(age_group=50,cnt_order,0)) "50대"
from       
(
select f.cuisine_type,
	   case when c.age between 10 and 19 then 10
	        when c.age between 20 and 29 then 20
	        when c.age between 30 and 39 then 30
	        when c.age between 40 and 49 then 40
	        when c.age between 50 and 59 then 50
	    end age_group,
       count(1) cnt_order
from food_orders f inner join customers c on f.customer_id = c.customer_id 
where age between 10 and 59
group by 1,2
) a
group by 1

사실 중간에 정답을 보긴 했다...

case when문을 서브쿼리 안에서 써야 하는지 밖에서 써야 하는지 헷갈렸기 때문이다.

위에서 말했듯이 중요한 점은 세그멘테이션을 확실하게 서브쿼리 테이블 안에서 해야

피벗 테이블 값이 잘 나온다는 것이다.

 

그래도 피벗 무조건 어렵다고 겁만 먹었었는데 이제는 나름 당당하게 스스로 만들어 볼 수 있다는 것에 신기하다.

 

완강을 하니까 뿌듯하다 :)

선생님, 감사합니다. ☺️