https://app.codility.com/programmers/trainings/6/
Codility SQL exerercise 2번문제 풀이
<문제 출처>
SqlEventsDelta
<source code>
select B.event_type, B.value
from (
select A.event_type,
A.value - lead(A.value) over(partition by A.event_type order by A.event_type) as value
from (
select *, rank() over(partition by event_type order by time desc) as ranking
from events
) as A
where A.ranking <= 2
) as B
where B.value is not null
해당 문제 풀이시, 주요 함수 2가지는 lead 와 rank 였다.
풀이의 진행순서는 아래와 같다.
1/ rank 함수를 이용하여, group : event_type , order : time desc 기준으로 ranking 파생변수를 생성한다.
2/ ranking이 2 이하(time sequence 상 상위 2개)인 ranking만 추출
3/ lead 함수를 이용하여, diff value 구하기
4/ null 과의 연산(상위 2번째 값은 lead를 통한 value가 없다.) 결과는 null 이기에, null인 행 제거
728x90
'Language(R, Python, SQL) > SQL' 카테고리의 다른 글
[SQL] MysQL 데이터베이스 권한 부여 (0) | 2022.12.19 |
---|---|
[SQL] HackerRank - SQL Problem <easy> (0) | 2022.12.08 |
[SQL] String 을 Date 형으로 변환 (0) | 2022.12.01 |
[SQL] Codility SQL exercise 3번 문제 (0) | 2022.11.29 |