COALESCE(age,20) ->age가 null값이면 20으로 대체
pivot table
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 a.restaurant_name,
substring(b.time, 1, 2) hh,
count(1) cnt_order
from food_orders a inner join payments b on a.order_id=b.order_id
where substring(b.time, 1, 2) between 15 and 20
group by 1, 2
) a
group by 1
order by 7 desc
피봇테이블을 만들기 위해서는 max 함수를 써야한다.
피벗 테이블 생성 시 MAX() 함수를 사용하는 이유는 집계 함수가 반드시 필요하기 때문입니다. SQL에서는 SELECT 절에 서브쿼리의 컬럼을 바로 옆으로 펼치려면 집계 함수가 필요합니다.]
window 함수
문법: window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)
rank() over (partition by 그룹 기준 컬럼 order by 정렬 기준)
그룹별로 누적합계 구하고 싶을 때 group by 사용하지 않고 sum 사용
sum(합할 컬럼명) over (partition by 그룹 기준)
'데이터분석 6기 > 사전캠프' 카테고리의 다른 글
[TIL]데이터분석 사전캠프 10일차 - Lv4. 단골 고객님 찾기 (0) | 2025.02.07 |
---|---|
[TIL]데이터분석 사전캠프 9일차 - Lv3. 이용자의 포인트 조회하기 (0) | 2025.02.06 |
[TIL] 데이터 분석 사전캠프 6일차 - JOIN 실습 (0) | 2025.01.23 |
[TIL] 데이터 분석 사전캠프 5일차 - 서브쿼리 실습 (0) | 2025.01.17 |
[TIL] 데이터분석 사전캠프 4일차 - 문법 정리 & 숙제 (0) | 2025.01.16 |