SQL로 피벗 테이블 만들기
과정 : 베이스 데이터 제작 ▶ 피벗 테이블 만들기
EX) 음식점별 시간별 주문 건수 데이터 제작
select restaurant_name,
max(if(HH='15', cnt_order, 0)) "15",
max(if(HH='16', cnt_order, 0)) "16",
max(if(HH='17', cnt_order, 0)) "17",
max(if(HH='18', cnt_order, 0)) "18",
max(if(HH='19', cnt_order, 0)) "19",
max(if(HH='20', cnt_order, 0)) "20"
from
(
select f.restaurant_name,
SUBSTR(p.time, 1, 2) HH,
count(1) cnt_order
from food_orders f inner join payments p on f.order_id=p.order_id
where SUBSTR(p.time, 1, 2) between 15 and 20
group by 1, 2
) a
group by 1
order by 7 desc
성별, 연령별 주문건수 데이터 제작
select age,
max(if(gender='male', order_count, 0)) male,
max(if(gender='female', order_count, 0)) female
from
(
select b.gender,
case when age between 10 and 19 then 10
when age between 20 and 29 then 20
when age between 30 and 39 then 30
when age between 40 and 49 then 40
when age between 50 and 59 then 50 end age,
count(1) order_count
from food_orders a inner join customers b on a.customer_id=b.customer_id
where b.age between 10 and 59
group by 1, 2
) t
group by 1
order by 1 desc
유튜브로 개인 복습 필수
윈도우 함수 (rank, sum)
윈도우 함수는 함수와 over가 기본
EX.
rank() over (partition by ~ order by ~) ~~~
두 개는 짝으로/ 어떤 단위로 묶을건지/어떤 순서로 값 줄건지
sum(cnt_order) over (partition by cuisine_type)
sql을 통한 날짜 형식 지정
date(date) 함수명(컬럼명)
= 날짜 형식의 데이터로 변경됨
date_format(date(date), '%Y') "년",
date_format(date(date), '%m') "월",
date_format(date(date), '%d') "일",
date_format(date(date), '%w') "요일"
= 각 년,월,일,요일을 추출하는 구문 (요일은 0(일요일)~6(토요일))