Cute Happy Ghost
본문 바로가기
자격증/SQLD

SQL 자격검정 실전문제 123p 118번

by JENN_tech7 2020. 10. 20.
728x90
SMALL

동일하게 ID, START_VAL, END_VAL을 뽑는데 END_VAL에서 NULL값이면 99로 치환해서 뽑습니다.

그럼 저 테이블과 동일한데 END_VAL의 마지막 값만 NULL 대신 99인겁니다.

그러고 나서 FLAG1, FLAG2 칼럼을 뽑습니다.

ID I START_VAL I END_VAL I FLAG1 I FLAG2

FLAG1의 경우, START_VAL 값이 이전 행의 END_VAL과 같은 경우에는 1이 채워지고 다르다면 0이 채워집니다.

첫행의 START_VAL은 10인데 이전 행은 없으니 비교할 수 없습니다. 그러므로 0이 채워집니다.

두번째 행의 START_VAL은 14인데 이전 행의 END_VAL은 14입니다. 동일하니 1이 채워집니다.

세번째 행의 START_VAL은 15이고 이전 행의 END_VAL은 15입니다. 동일하니 1이 채워집니다.

이런식으로 쭉쭉 내려가시면 됩니다.

FLAG2의 경우, END_VAL값이 다음 행의 START_VAL과 같은 경우에는 1이 채워지고 다르다면 0이 채워집니다.

첫행의 END_VAL은 14, 다음 행의 START_VAL은 14입니다. 동일하니 1이 채워집니다.

두번째 행의 END_VAL은 15, 다음 행의 END_VAL은 15입니다. 동일하니 1이 채워집니다.

네번째 행의 END_VAL은 18, 다음 행의 START_VAL은 20입니다. 값이 다르니 0이 채워집니다.

ORDER BY 절에 순서가 START_VAL 오름차순, END_VAL 오름차순인데 NULL 값일 시 99로 채워집니다.

이 인라인 뷰가 끝나고 나서

WHERE 절에서 FLAG1이 0이거나 FLAG2가 0인 것을 뽑으라 했으니

1번 보기 처럼 뽑아집니다.


출처

https://cafe.naver.com/sqlpd

데이터 전문가 포럼

728x90
LIST

댓글