TanzDev
TIL 2 본문
오늘 SQL 강의 5주차까지 완료했다.
Pivot Table, Window, Rank, Date 에 관하여 공부했다.
피벗테이블은 쉽게 말해 표 만들기였고 SQL 프로그램에서 필요한 컬럼을 정리해서 보여주는걸로 이해했다.
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 age
- 성별, 연령별 주문건수 Pivot Table 뷰 만들기 예시인데, 조인문과 서브쿼리를 이용해 피벗테이블을 만들어주어야하기때문에 문구가 슬슬 많아지고있는편이다.
Window function 명령어는 다채롭다라고 하는데, 사용할수있는건 랭크와 누적합만 알려주었기때문에 언제 적재적소에 사용할지 궁금증이 생겨났다.
window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)
- 함수 뒤에 항상 over가 따라온다고 배웠다. 예를들어
rank(조건) over(조건)
sum(조건) over(조건) 식이었는데 머리속으론 이해가 되긴하지만 어떨때 필요할지 생각해보면 조금 고민이 필요한거같다.
Date 함수는 문자로 표기된 날짜를 말그대로 날짜로 변경해주는것이었고 이를 이용해 DATE_FOMAT 명령어를 이용하면
"년" , "월" , "일" , "요일" 정도로 분해하는게 가능한데 이는 유용하다 생각했다.
select date_format(date(date), '%Y') y,
date_format(date(date), '%m') m,
count(1) order_count
from food_orders a inner join payments b on a.order_id=b.order_id
where date_format(date(date), '%m')='03'
group by 1, 2
order by 1
데이트함수는 실전에서 오히려 자주 쓰일것같았다. 날짜는 어떤 항목에서도 많이 나오다보니 기본기로 익혀두면 두고두고 쓸일이 많을거같았다.
5주차 수강하고 중반부부터 급격하게 난이도가 오르긴하지만 못배울 정도는 아니었던거같다.
다만 고민되는부분이라면 실전에서 얼마나 유용하게 쓰이느냐에 관한 문제였는데
실전에서 어떻게 응용하고 써먹을것인지, 내가 필요한 분야에 얼마나 필요한것인지 현재로써 알수없기때문에
현재로썬 일반적으로 '그런게있었지' 라던지, 문맥의 흐름이 어떻게 흘러가느냐에 대한 이해가 더 필요할것이다.
'기록보드 > TIL' 카테고리의 다른 글
TIL 6 (웹개발 기초) (1) | 2024.02.05 |
---|---|
TIL 5 (코드카타 연습) (0) | 2024.02.04 |
TIL 4 웹개발 (멜로디쉐어 제작) (1) | 2024.02.03 |
TIL 3 (ChatGPT 웹 개발하기 시작) (1) | 2024.02.02 |
TLT 1 (0) | 2024.01.31 |