yunsh206

회원가입로그인

누적 정규분포 얘기하기 전에 CONNECT BY LEVEL 부터 먼저 알고 가자.

 

최근에 알게 된 건데 CONNECT BY LEVEL <= :변수 이라는 명령어를 쓰면 1부터 :변수까지 1씩 루프를 돌린다. ( <=, < 사용 가능함)

 

CONNECT BY LEVEL 예제.jpg

SELECT FROM DUAL 을 하면 ROW가 한 건만 나와야 하는데, 9건의 ROW가 나왔다. 한 마디로 ROW를 강제로 늘리는 게 가능하다는 거.

 

c 로 표현하자면 for ( i = 1; i <= :변수; i++) 와 동일하다. 1에서 시작하는 것도 고정, 1씩 증가하는 것도 고정되어 있으며, 변경 가능한 건 어디까지 루프를 돌릴 것인가만 지정가능하다. 하지만 LEVEL 을 가공하면 시작점도, 증가 폭도 다양하게 만들 수 있다.

 

CONNECT BY LEVEL 예제 (증가폭 0.1).jpg

LEVEL 에 곱하기 0.1 을 하는 것으로 0.1씩 증가하는 걸로 바꾸었다.

 

 

CONNECT BY LEVEL 예제 (증가폭 -0.1).jpg

마이너스( – ) 값을 LEVEL 에 곱하면 감소하는 걸로 바꿀 수 있다.

 

 

CONNECT BY LEVEL 예제 (10부터 시작).jpg

LEVEL 에 10을 더하면 11부터 시작할 수 있다.

 

CONNECT BY LEVEL 예제 (-4부터 시작).jpg

-5를 더하게 하면 -4부터 시작하게 할 수 있다.

 

CONNECT BY LEVEL 예제 (5부터 시작해서 1씩 감소).jpg

6을 더하고 LEVEL 에 마이너스 ( – )를 곱해놓으면 5부터 시작해서 1까지 감소하는 걸로 만들 수 있다.

 

이렇게 CONNECT BY LEVEL 을 통해 x 의 값을 여러 건의 ROW를 만들고, 그런 후에 앞에서 만든 확률밀도 함수의 값에 넣어서 SUM을 하면 누적정규분포의 근사치를 구할 수 있게 된다.

 

그 외에 CONNECT BY LEVEL 은 일정한 간격의 데이터를 생성할 수 있기 때문에, 데이터가 일정한 간격으로 분포하고 있다면 (숫자가 정수로만 되어 있다던지, 일자로만 되어 있다던지) 범위 지정을 할 때 BETWEEN 을 쓰지 않고, CONNECT BY LEVEL 로 생성한 데이터로 JOIN을 걸면 성능향상에 도움이 된다고 한다. 한 마디로 IN (1, 2, 3, 4, ..., 100)을 일일이 쓰기 귀찮을 때, 혹은 범위가 변동할 때에 도움이 된다.

 

출처: http://wiki.gurubee.net/pages/viewpage.action?pageId=27427825

 

CONNECT BY LEVEL JOIN 조건.jpg

TEST_TABLE 의 ID 가 정수로 되어 있다면 위의 것이나 아래 것이나 동일하게 동작하는데, BETWEEN 보다는 값을 특정하는 게 성능이 좋으므로 아래 것이 성능이 더 좋을 확률이 높다. (절대적인 건 없다. 플랜을 확인해봐야 한다.)

번호 제목 글쓴이 날짜 조회 수 추천 수
835 리눅스 새 하드 장착하기 RanomA 2021.12.01 598 0
834 리눅스 SSH Network error: Software caused connection abort RanomA 2021.05.29 2016 0
833 인터넷 기본 설정 복원 창 띄우는 방법들 file RanomA 2021.05.01 1021 0
832 리눅스 디렉토리별 압축 파일 생성 쉘 스크립트 RanomA 2021.04.04 829 0
831 Javascript 숫자에 끊어 읽기 컴마(,) 추가 RanomA 2020.11.27 750 0
830 Javascript 문자열을 포맷 맞춰 날짜로, 날짜를 포맷 맞춘 문자열로 변환 RanomA 2020.11.26 717 0
829 Javascript 날짜 더하기 RanomA 2020.11.26 449 0
828 Javascript 해당 연월의 마지막 날짜 가져오기 RanomA 2020.11.25 363 0
827 Javascript isNullOrEmpty RanomA 2020.11.25 684 0
826 Javascript 전화번호 포매팅 RanomA 2020.11.25 2307 0
825 Javascript IN RanomA 2020.11.18 259 0
824 Javascript LPAD RanomA 2020.11.17 580 0
823 Adobe Creative Cloud 업데이트 실패 184(혹은 C184) 오류 file RanomA 2020.09.08 1068 0
822 오라클 테이블 레이아웃 조회 Query RanomA 2020.01.13 2062 0
821 SQL Developer의 폰트 설정에서 폰트 목록이 안나타날 때 [6] file RanomA 2019.12.30 4868 0
820 Underscore( _ 문자)를 카멜 케이스(Camel Case)로 변환하기 RanomA 2019.12.06 1813 0
819 라이트룸(Adobe Lightroom) 한자/일본어용 폰트 변경 file RanomA 2018.06.06 2140 0
818 마녀의 빗자루와 악마와의 파티 RanomA 2018.03.23 889 0
817 크레인 안전 점검이 허술해진 게 이명박 때가 아니다? RanomA 2018.01.06 707 0
816 인도 중국의 분쟁 지역 file RanomA 2017.08.17 1291 0