SQL리뷰 수업 코드정리-5
5일차 코드
Discus_Gold_Medal
1 | -- 성별, 연도 (2004, 2008, 2012), 현재 국가 (as Champion), 이전 국가 |
서브쿼리가 정렬되어 출력되고, last_champion이 바로 전 대회의 우승국을 출력하는것을 볼 수 있다.
Athletics_Gold
1 | -- 경기종목을 2개로 추가 ('100M', '10000M') |
DiscusThrow_Gold
1 | -- year, athlete, future_champion(3회 이후 챔피언) |
이전까지 쿼리에서 사용된 LAG함수와 LEAD함수는 다음 절에서 설명한다.
LAG() 함수와 LEAD() 함수
LAG() 함수
LAG함수는 보통 LAG(column, n(기본값1))
의 형태인데 이는 현재 행 앞의 행에 있는 열의 값을 반환한다.
그렇기 때문에 위 사진에서 last_champion의 첫번째 결과는 null이 된다(앞의 결과가 없기때문)
이후 부터는 champion컬럼의 결과가 차례로 출력된다.
참고로 5번 열에서의 null은 gender를 partition by로 나누었고 현재 행의 앞의 열을 분리시킨상태이기 때문에 null값이 조회된다.
LEAD() 함수
기본적인형태는 LEAD(column, n(기본값1))
의 형태이며,
LEAD 함수는 LAG 함수와는 반대로 현재 행 뒤의 행에 있는 열의 값을 반환한다.
사진에서 사용한 코드는 LEAD(athlete,3)
이므로 3칸 뒤의 열의 값을 반환한다.
이후 athlete컬럼의 결과가 차례로 출력되며 3번열 이후의 값은 존재하지 않기때문에 null이 반환된다.
SQL리뷰 수업 코드정리-5
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.