[SQL입문] 메타코드 강의 후기_ 제4과목-WINDOW
목차
SUM,AVG,MIN,MAX,COUNT
ROW_NUMBER,RANK,DENSE_RANK,LAG,LEAD,
FIRST_VALUE,LAST_VALUE
OVER(PARTITION BY ~ ORDER BY~)
SUM이라는 함수를 사용한다면 3개씩 묶어서(123,456,789) 합을 보고싶을때 사용할수 있다.
단순한 데이터의 조회가 아니고 통계적인 부분이 들어간다.
sum(수학점수) over(partition by 학생이름 order by cloumn3) as new_cloumn
PARTITION BY 는 GROUNP BY 와 비슷한 역할이다. 둘의 차이점은 그룹별로 누적합계를 구한다. partition은 본래의 table를 그대로 출력한다.
partition by는 생략가능하다!
ORDER BY는 계산을 하는 순서를 정해준다.
1. over(partition by ~~ order by)
날짜 순서대로 aoumnt를 합한것이다.
partition by은 누적합인것을 볼 수 있다!
2.over(partition by~~)
oder by도 생략이 가능하다!
하지만 생략했을 경우 누적 합계순서로 나타나지 않는다!
103의 total_amount 값이 모두 22,314.36이 나오는 것이다.
3.누적합 over(order by)
patition by 생략으로 103,112 이런 식으로 그룹화 된 것이 사라지고 누적합만 나타나고 있다.
전체테이블의 누적합을 알 수 있다!
4. over() patition by 와 order by 모두 생략
모두 생략하면 전체의 sum을 출력한다.
강사님이 알려주신 대박 꿀팁!

from 절에 저렇게 별칭을 (o) 써주고
o.을 눌러주면 컬럼명이 바로 뜬다. 컬럼명 오타로 고통받다가 이제서야 알게됐는데 완전 편하다!!
LEAD/LAG 함수
LEAD: 다음 행 데이터를 가져온다.(아래의 데이터)
LAG: 이전 행 데이터를 가져온다.( 위의 데이터)
보통 증가분을 확인할 때 많이 사용한다.
순위함수
ROW_NUMBER 함수가 가장 많이 사용된다!
자격증 시험을 위해선 암기가 필요하다!
자주 쓰이느 함수이다.
first_value() 함수 안에 order bt 함수를 사용 할 경우 경우에 따라 결과가 바뀌니 유의하여 사용하여야 한다.
분석 할때 기간을 내 마음대로 정할 수 있다.
ex) 올해 1일 부터 지금까지의 누적
현재 기준으로 하나 위의것이 하나 아래것 포함해서 평균을 구할 것이다!
이런식으로 over(oder by)와 함께 사용해주면 된다.
https://mcode.co.kr/mypage/lecture_view?wm_id=17116&lecture_id=25&lecture_sub=152&lecture_num=5