이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.4rowRowRowRow2 ~ 토토 핫 ~ Row6 ~ Row5 ~ Row9 ~ row5 ~ row9 ~ 토토 핫 ~ row6 ~ row8_RowRowRowRowRow2 ~ 토토 핫 ~ Row6 ~ Row5 ~ Row9 ~ row5 ~ row9 ~ 토토 핫 ~ Row6 ~ 토토 핫57버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.36. 테이블기능

테이블 기능모듈에는 다양한 포함 테이블(즉, 여러 행)을 반환하는 함수입니다. 이것들 함수는 그 자체로나 어떻게 사용되는지에 대한 예로서 모두 유용합니다. 여러 행을 반환하는 C 함수를 작성합니다.

F.36.1. 제공되는 기능

표 F-30다음에서 제공하는 기능을 보여줍니다.테이블 기능모듈.

표 F-30.테이블펑크기능

기능 반품 설명
normal_rand(int numvals, float8 평균, float8 표준 개발) setof float8 정규 분포된 무작위 값 세트를 생성
크로스탭(메이저 토토 사이트 SQL) 레코드 집합 생성"피벗 테이블"포함 행 이름 플러스N값 열, 어디서N행에 따라 결정됩니다. 호출 쿼리에 지정된 유형
크로스탭N(메이저 토토 사이트 SQL) setof table_crosstab_N 생성"피벗 테이블"포함 행 이름 플러스N값 열.크로스탭2, 크로스탭3크로스탭4미리 정의되어 있지만 생성할 수 있습니다. 추가크로스탭N아래 설명된 기능
크로스탭(메이저 토토 사이트 source_sql, 메이저 토토 사이트 카테고리_sql) 레코드 집합 생성"피벗 테이블"와 함께 두 번째 쿼리로 지정된 값 열
크로스탭(메이저 토토 사이트 sql, int N) 레코드 집합

구식 버전크로스탭(메이저 토토 사이트). 매개변수N이제 무시됩니다. 열은 항상 호출 쿼리에 의해 결정됩니다.

connectby(메이저 토토 사이트 relname, 메이저 토토 사이트 keyid_fld, 메이저 토토 사이트 parent_keyid_fld [, 메이저 토토 사이트 orderby_fld ], 메이저 토토 사이트 start_with, int 최대 깊이 [, 메이저 토토 사이트 분기_delim ]) 레코드 집합 계층적 트리 구조의 표현을 생성합니다.

F.36.1.1.normal_rand

normal_rand(int numvals, float8 평균, float8 stddev)는 setof float8을 반환합니다.

normal_rand다음 세트를 생성합니다. 정규 분포된 임의 값(가우스 분포).

숫자는 값의 개수입니다. 함수에서 반환되었습니다.평균이것은 값의 정규 분포의 평균 및stddev은 정규의 표준편차입니다. 가치의 분배.

예를 들어, 이 호출은 평균이 5인 1000개의 값을 요청하고 표준편차 3:

테스트=# SELECT * FROM Normal_rand(1000, 5, 3);
     노멀_랜드
---------
     1.56556322244898
     9.10040991424657
     5.36957140345079
   -0.369151492880995
    0.283600703686639
       .
       .
       .
     4.82992125404908
     9.71308014517282
     2.49639286969028
(1000행)

F.36.1.2.크로스탭(메이저 토토 사이트)

크로스탭(메이저 토토 사이트 SQL)
크로스탭(메이저 토토 사이트 sql, int N)

크로스탭함수는 다음 용도로 사용됩니다. 생산하다"피벗"디스플레이, 여기서 데이터 아래가 아닌 페이지 전체에 나열됩니다. 예를 들어, 다음과 같은 데이터가 있습니다.

row1 발11
행1 발12
행1 발13
...
행2 발21
행2 발22
행2 발23
...

다음과 같이 표시하고 싶습니다

row1 발11 발12 발13 ...
행2 발21 발22 발23 ...
...

크로스탭함수는 메이저 토토 사이트를 받습니다 매개변수는 형식화된 원시 데이터를 생성하는 SQL 쿼리입니다. 첫 번째 방법으로, 두 번째 방법으로 형식이 지정된 테이블을 생성합니다.

sql매개변수는 SQL 문입니다. 이는 데이터의 소스 세트를 생성합니다. 이 문은 반환되어야 합니다. 하나row_name열, 하나범주열, 그리고 하나열.N은 더 이상 사용되지 않는 매개변수, 제공되면 무시됨(이전에는 일치해야 함) 출력 값 열의 수는 다음과 같이 결정됩니다. 호출 쿼리).

예를 들어 제공된 쿼리는 다음과 같은 집합을 생성할 수 있습니다. 좋아요:

row_name 고양이 값
--------+---------+-------
  행1 cat1 발1
  행1 고양이2 발2
  행1 cat3 발3
  행1 cat4 발4
  행2 고양이1 발5
  행2 고양이2 발6
  행2 cat3 발7
  행2 cat4 val8

크로스탭함수가 선언되었습니다 돌아오다레코드 집합이므로 실제 이름은 출력 열의 유형은발신소명절선택문, 예:

SELECT * FROM crosstab('...') AS ct(행_이름 메이저 토토 사이트, 카테고리_1 메이저 토토 사이트, 카테고리_2 메이저 토토 사이트);

이 예는 다음과 같은 집합을 생성합니다:

<== 값 열 ==
 행_이름 카테고리_1 카테고리_2
----------+------------+------------
  행1 값1 값2
  행2 발5 발6

발신절은 출력을 정의해야 합니다. 하나로row_name열(동일한 데이터 유형을 SQL 쿼리의 첫 번째 결과 열로 사용) 그 뒤에 아니열(모두 동일한 데이터 SQL 쿼리의 세 번째 결과 열로 입력). 설정할 수 있습니다. 원하는 만큼의 출력 값 열. 출력 이름 열은 귀하에게 달려 있습니다.

크로스탭함수는 하나를 생성합니다 동일한 입력 행의 각 연속 그룹에 대한 출력 행row_name값. 출력을 채웁니다.열, 왼쪽에서 오른쪽으로,이 행의 필드입니다. 만약 거기에 출력보다 그룹의 행 수가 적습니다.열, 추가 출력 열은 다음과 같습니다. 널로 채워짐; 행이 더 있으면 추가 입력 행은 다음과 같습니다. 건너뛰었습니다.

실제로 SQL 쿼리는 항상 다음을 지정해야 합니다.1,2순으로 주문입력 행이 다음과 같은지 확인합니다. 올바른 순서, 즉 동일한 값row_name함께 올바르게 결합되었습니다. 행 내에서 주문했습니다. 참고하세요크로스탭자체는 어떤 관심도 기울이지 않습니다. 쿼리 결과의 두 번째 열입니다. 그냥 주문하면 된다 by - 세 번째 열 값이 표시되는 순서를 제어합니다. 페이지 전체에 걸쳐 있습니다.

다음은 완전한 예입니다:

CREATE TABLE ct(id SERIAL, rowid TEXT, 속성 TEXT, 값 TEXT);
INSERT INTO ct(rowid, 속성, 값) VALUES('test1','att1','val1');
INSERT INTO ct(rowid, 속성, 값) VALUES('test1','att2','val2');
INSERT INTO ct(rowid, 속성, 값) VALUES('test1','att3','val3');
INSERT INTO ct(rowid, 속성, 값) VALUES('test1','att4','val4');
INSERT INTO ct(rowid, 속성, 값) VALUES('test2','att1','val5');
INSERT INTO ct(rowid, 속성, 값) VALUES('test2','att2','val6');
INSERT INTO ct(rowid, 속성, 값) VALUES('test2','att3','val7');
INSERT INTO ct(rowid, 속성, 값) VALUES('test2','att4','val8');

선택 *
크로스탭에서(
  'rowid, 속성, 값 선택
   CT에서
   여기서 속성 = ''att2'' 또는 속성 = ''att3''
   1,2' 단위로 주문하세요)
AS ct(행_이름 메이저 토토 사이트, 카테고리_1 메이저 토토 사이트, 카테고리_2 메이저 토토 사이트, 카테고리_3 메이저 토토 사이트);

 행_이름 | 카테고리_1 | 카테고리_2 | 카테고리_3
----------+------------+------------+------------
 테스트1 | 발2 | 발3 |
 테스트2 | 발6 | 발7 |
(2행)

항상 다음을 작성하지 않아도 됩니다.발신절을 설정하여 출력 열을 정의합니다. 원하는 출력 행 유형을 가진 사용자 정의 크로스탭 함수를 작성합니다. 그 정의에 연결되어 있습니다. 이에 대해서는 다음 섹션에서 설명합니다. 또 다른 가능성은 필수를 포함하는 것입니다.발신뷰 정의의 절.

F.36.1.3.크로스탭N(메이저 토토 사이트)

크로스탭N(메이저 토토 사이트 SQL)

크로스탭N함수는 설정 방법의 예입니다. 장군을 위한 맞춤 포장지 작성크로스탭함수이므로 쓸 필요가 없습니다. 호출의 열 이름 및 유형선택질의.테이블펑크모듈 포함크로스탭2, 크로스탭3크로스탭419113_19154

CREATE TYPE tablefunc_crosstab_N AS(
    행_이름 TEXT,
    카테고리_1 메이저 토토 사이트,
    카테고리_2 메이저 토토 사이트,
        .
        .
        .
    카테고리_N TEXT
);

따라서 이 함수는 입력 쿼리가 있을 때 직접 사용할 수 있습니다. 생산하다row_name그리고유형의 열메이저 토토 사이트, 2개, 3개 또는 4개의 출력 값 열이 필요합니다. 에서 다른 모든 방식은 위에 설명된 대로 정확하게 작동합니다. 일반크로스탭함수.

예를 들어, 이전 섹션에 주어진 예는 다음으로도 일함

선택 *
크로스탭3(
  'rowid, 속성, 값 선택
   CT에서
   여기서 속성 = ''att2'' 또는 속성 = ''att3''
   1,2' 단위로 주문);

이 기능은 주로 설명 목적으로 제공됩니다. 다음을 기반으로 자신만의 반환 유형과 함수를 만들 수 있습니다. 기본크로스탭()함수. 거기 두 가지 방법이 있습니다:

  • 원하는 출력 열을 설명하는 복합 유형을 생성합니다. 의 예와 유사합니다.contrib/tablefunc/tablefunc--1.0.sql. 그런 다음 하나를 허용하는 고유한 함수 이름메이저 토토 사이트매개변수 및 반환setof your_type_name, 그러나 동일한 기본에 연결크로스탭C 함수. 예를 들어, 소스가 데이터는 다음과 같은 행 이름을 생성합니다.메이저 토토 사이트그리고 값은float8, 5개의 값을 원합니다. 열:

    CREATE TYPE my_crosstab_float8_5_cols AS(
        my_row_name 메이저 토토 사이트,
        my_category_1 float8,
        my_category_2 float8,
        my_category_3 float8,
        my_category_4 float8,
        my_category_5 float8
    );
    
    함수 생성 또는 교체 crosstab_float8_5_cols(text)
        my_crosstab_float8_5_cols 세트를 반환합니다.
        AS '$libdir/tablefunc','crosstab' LANGUAGE C STABLE STRICT;
  • 사용OUT반환을 정의하는 매개변수 암시적으로 입력하세요. 동일한 예를 다음과 같이 수행할 수도 있습니다.

    함수 생성 또는 교체 crosstab_float8_5_cols(
        메이저 토토 사이트로,
        OUT my_row_name 메이저 토토 사이트,
        OUT my_category_1 float8,
        OUT my_category_2 float8,
        OUT my_category_3 float8,
        OUT my_category_4 float8,
        OUT my_category_5 float8)
      RETURNS 레코드 세트
      AS '$libdir/tablefunc','crosstab' LANGUAGE C STABLE STRICT;

F.36.1.4.크로스탭(메이저 토토 사이트, 메이저 토토 사이트)

크로스탭(메이저 토토 사이트 source_sql, 메이저 토토 사이트 카테고리_sql)

단일 매개변수 형식의 주요 제한사항크로스탭그룹의 모든 값을 처리한다는 것입니다 마찬가지로 각 값을 사용 가능한 첫 번째 열에 삽입합니다. 당신이 값 열이 특정 범주에 해당하도록 하려는 경우 데이터가 있고 일부 그룹에는 일부 데이터가 없을 수도 있습니다. 카테고리가 잘 작동하지 않습니다. 의 2개 매개변수 형식크로스탭이 사건을 다음으로 처리합니다. 해당 카테고리의 명시적인 목록을 제공합니다. 출력 열.

source_sql은 SQL 문입니다. 데이터의 소스 세트를 생성합니다. 이 문은 하나를 반환해야 합니다.row_name열, 하나범주열, 그리고 하나열. 하나 이상이 있을 수도 있습니다."추가"열.row_name열이 먼저 와야 합니다.범주그리고열은 순서대로 마지막 두 열이어야 합니다. 모든 열 사이row_name그리고범주다음과 같이 취급됩니다."추가"."추가"열은 동일한 모든 행에 대해 동일할 것으로 예상됩니다.row_name값.

예를 들어,source_sql생산할 수도 있습니다 다음과 같은 세트입니다:

SELECT row_name, extra_col, cat, value FROM foo ORDER BY 1;

 row_name extra_col 고양이 값
----------+------------+------+---------
  row1 extra1 cat1 val1
  행1 추가1 cat2 val2
  행1 추가1 cat4 val4
  row2 extra2 cat1 val5
  row2 extra2 cat2 val6
  row2 extra2 cat3 val7
  row2 extra2 cat4 val8

category_sql은 SQL 문입니다. 카테고리 세트를 생성합니다. 이 문은 하나만 반환해야 합니다. 칼럼. 최소한 하나의 행을 생성해야 합니다. 그렇지 않으면 오류가 발생합니다. 생성되었습니다. 또한 중복된 값이나 오류가 발생해서는 안 됩니다. 생성됩니다.category_sql아마도 다음과 같은 것:

foo ORDER BY 1에서 고유한 고양이 선택;
    고양이
  -------
    고양이1
    고양이 2
    고양이3
    고양이4

크로스탭함수가 선언되었습니다 돌아오다레코드 세트이므로 실제 이름은 출력 열의 유형은발신소명절선택문, 예:

SELECT * FROM 크로스탭('...', '...')
    AS ct(row_name 메이저 토토 사이트, 추가 메이저 토토 사이트, cat1 메이저 토토 사이트, cat2 메이저 토토 사이트, cat3 메이저 토토 사이트, cat4 메이저 토토 사이트);

이것은 다음과 같은 결과를 낳습니다:

<== 값 열 ==
row_name 추가 cat1 cat2 cat3 cat4
---------+-------+------+------+------+------
  행1 추가1 발1 발2 발4
  row2 extra2 val5 val6 val7 val8

발신절은 적절한 항목을 정의해야 합니다. 적절한 데이터 유형의 출력 열 수. 있는 경우Nsource_sql쿼리 결과, 첫 번째N-그 중 2개는 첫 번째와 일치해야 합니다N-2개의 출력 열. 남은 출력 열에는의 마지막 열 유형이 있어야 합니다.source_sql쿼리 결과가 있고 거기에 의 행 수와 정확히 같아야 합니다.category_sql쿼리 결과입니다.

크로스탭함수는 하나를 생성합니다 동일한 입력 행의 각 연속 그룹에 대한 출력 행행_이름값. 출력row_name열 및 기타"추가"열은 다음의 첫 번째 행에서 복사됩니다. 그룹. 출력열 로 채워져 있습니다.필드 일치하는 행범주값. 행의 경우범주아무것도 일치하지 않습니다 의 출력category_sql쿼리, 그무시됩니다. 출력 열 일치하는 범주가 그룹의 어떤 입력 행에도 존재하지 않습니다. null로 채워졌습니다.

실제로는source_sql질의 항상 지정해야 함1개 단위로 주문보장하기 위해 그 값은 동일합니다행_이름있습니다 함께 모였습니다. 그러나 카테고리 내에서 순서를 정하는 것은 그룹은 중요하지 않습니다. 또한, 다음 사항을 확인하는 것이 중요합니다. 의 순서category_sql쿼리의 출력 지정된 출력 열 순서와 일치합니다.

다음은 두 가지 완전한 예입니다:

판매 테이블 생성(연도 정수, 월 정수, 수량 정수);
판매액에 삽입(2007, 1, 1000);
판매액에 삽입(2007, 2, 1500);
판매액에 삽입(2007, 7, 500);
판매액에 삽입(2007, 11, 1500);
판매액에 삽입(2007, 12, 2000);
판매액에 삽입(2008, 1, 1000);

크로스탭에서 *를 선택합니다(
  '판매주문서에서 연도, 월, 수량을 1씩 선택',
  'generate_series(1,12) m에서 m을 선택하세요.'
)로 (
  연도 정수,
  "Jan" 정수,
  "2월" 정수,
  "3월" int,
  "4월" 정수,
  "5월" 정수,
  "준" 정수,
  "7월" int,
  "8월" 정수,
  "9월" 정수,
  "10월" 정수,
  "11월" int,
  "12월" 정수
);
 년 | 1월 | 2월 | 3월 | 4월 | 5월 | 준 | 7월 | 8월 | 9월 | 10월 | 11월 | 12월
------+------+------+------+------+-----+------+------+------+------+------+------+------
 2007년 | 1000 | 1500 |     |     |     |     | 500 |     |     |     | 1500 | 2000
 2008 | 1000 |      |     |     |     |     |     |     |     |     |      |
(2행)
CREATE TABLE cth(rowid 메이저 토토 사이트, rowdt 타임스탬프, 속성 메이저 토토 사이트, val 메이저 토토 사이트);
INSERT INTO cth VALUES('test1','2003년 3월 1일','온도','42');
INSERT INTO cth VALUES('test1','2003년 3월 1일','test_result','PASS');
INSERT INTO cth VALUES('test1','2003년 3월 1일','volts','2.6987');
INSERT INTO cth VALUES('test2','2003년 3월 2일','온도','53');
INSERT INTO cth VALUES('test2','2003년 3월 2일','test_result','FAIL');
INSERT INTO cth VALUES('test2','2003년 3월 2일','test_startdate','2003년 3월 01일');
INSERT INTO cth VALUES('test2','2003년 3월 2일','volts','3.1234');

SELECT * FROM 크로스탭
(
  'SELECT rowid, rowdt, 속성, 값 FROM cth ORDER BY 1',
  'Cth ORDER BY 1에서 DISTINCT 속성 선택'
)
그대로
(
       로우이드 메이저 토토 사이트,
       rowdt 타임스탬프,
       온도 정수4,
       테스트_결과 메이저 토토 사이트,
       test_startdate 타임스탬프,
       볼트 float8
);
 로우이드 |          행트 | 온도 | 테스트_결과 |      테스트_시작일 | 볼트
--------+---------------+------------+-------------+---------------+---------
 테스트1 | 2003년 3월 1일 토요일 00:00:00 |          42 | 패스 |                          | 2.6987
 테스트2 | 2003년 3월 2일 일요일 00:00:00 |          53 | 실패 | 2003년 3월 1일 토요일 00:00:00 | 3.1234
(2행)

작성하지 않아도 되도록 사전 정의된 함수를 생성할 수 있습니다 각 쿼리의 결과 열 이름 및 유형입니다. 예시 보기 이전 섹션에서. 이 형식의 기본 C 함수는크로스탭이름이 지정됨crosstab_hash.

F.36.1.5.커넥트바이

connectby(메이저 토토 사이트 relname, 메이저 토토 사이트 keyid_fld, 메이저 토토 사이트 parent_keyid_fld
          [, 메이저 토토 사이트 orderby_fld ], 메이저 토토 사이트 start_with, int max_length
          [, 메이저 토토 사이트 Branch_delim ])

커넥트비함수는 다음을 생성합니다. 테이블에 저장된 계층적 데이터를 표시합니다. 테이블 행을 고유하게 식별하는 키 필드가 있어야 하며 각 행의 상위(있는 경우)를 참조하는 상위 키 필드입니다.커넥트바이하위 트리를 표시할 수 있습니다. 임의의 행에서 내림차순입니다.

테이블 F-31매개변수를 설명합니다.

표 F-31.커넥트비매개변수

매개변수 설명
relname 소스 관계의 이름
keyid_fld 키 필드 이름
parent_keyid_fld 상위 키 필드 이름
orderby_fld 형제 항목을 정렬할 필드 이름(선택 사항)
start_with 시작할 행의 키 값
최대_깊이 하강할 최대 깊이 또는 무제한 깊이의 경우 0
branch_delim 분기 출력에서 키를 구분하는 문자열(선택 사항)

키 및 상위 키 필드는 모든 데이터 유형이 될 수 있지만 같은 종류여야 합니다. 참고하세요start_with값은 메이저 토토 사이트 문자열로 입력되어야 합니다. 키 필드의 유형에 관계없이.

커넥트비함수가 선언되었습니다 돌아오다레코드 집합, 실제 이름은 출력 열의 유형은발신소명절선택문, 예:

SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')
    AS t(keyid 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, 레벨 int, 분기 메이저 토토 사이트, pos int);

처음 두 출력 열은 현재 행의 키에 사용됩니다. 그리고 그 부모 행의 키; 테이블 유형과 일치해야 합니다. 키 필드. 세 번째 출력 열은 트리의 깊이이며 유형이어야 합니다.정수. 만약에branch_delim매개변수가 지정되었으며 다음 출력 열은 분기 표시이며 유형이어야 합니다.메이저 토토 사이트. 마지막으로 만약에orderby_fld매개변수가 주어졌습니다. 마지막 출력 열은 일련 번호이며 유형이어야 합니다.정수.

"가지"출력 열에는 다음이 표시됩니다. 현재 행에 도달하기 위해 사용되는 키의 경로입니다. 열쇠가 분리되어 있어요 지정된에 의해branch_delim문자열. 만약에 분기 표시가 필요하지 않습니다. 둘 다 생략합니다.branch_delim매개변수 및 분기 열 출력 열 목록입니다.

같은 부모의 형제자매 순서가 중요하다면, 다음을 포함합니다.orderby_fld매개변수 동위 항목을 정렬할 필드를 지정합니다. 이 필드는 무엇이든 가능합니다. 정렬 가능한 데이터 유형. 출력 열 목록에는 최종 항목이 포함되어야 합니다. 정수 일련번호 열, 다음과 같은 경우에만orderby_fld지정되었습니다.

테이블 및 필드 이름을 나타내는 매개변수가 복사됩니다 있는 그대로 SQL 쿼리에 포함됩니다.커넥트바이내부적으로 생성됩니다. 그러므로, 이름에 대소문자가 혼합되어 있거나 다음이 포함된 경우 큰따옴표를 포함합니다. 특수 문자. 테이블을 스키마 한정해야 할 수도 있습니다. 이름.

큰 테이블에서는 다음이 없으면 성능이 저하됩니다. 상위 키 필드의 색인입니다.

중요한 것은branch_delim문자열은 어떤 키 값에도 나타나지 않습니다. else커넥트비잘못 보고할 수 있습니다. 무한 재귀 오류. 만약에 참고하세요branch_delim제공되지 않음, 기본값은~재귀 감지에 사용됩니다. 목적.

다음은 예입니다:

CREATE TABLE connectby_tree(keyid 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, pos int);

INSERT INTO connectby_tree VALUES('row1',NULL, 0);
INSERT INTO connectby_tree VALUES('row2','row1', 0);
INSERT INTO connectby_tree VALUES('row3','row1', 0);
INSERT INTO connectby_tree VALUES('row4','row2', 1);
INSERT INTO connectby_tree VALUES('row5','row2', 0);
INSERT INTO connectby_tree VALUES('row6','row4', 0);
INSERT INTO connectby_tree VALUES('row7','row3', 0);
INSERT INTO connectby_tree VALUES('row8','row6', 0);
INSERT INTO connectby_tree VALUES('row9','row5', 0);

-- 브랜치 있음, orderby_fld 없음(결과 순서는 보장되지 않음)
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'row2', 0, '~')
 AS t(키 ID 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, 레벨 int, 분기 메이저 토토 사이트);
 키ID | 부모_키ID | 수준 |       가지
--------+---------------+-------+---------
 행2 |              |     0 | 행 2
 행4 | 행2 |     1 | 2행~4행
 행 6 | 행4 |     2 | 행2~행4~행6
 행8 | 행 6 |     3 | 행2~행4~행6~8행
 행 5 | 행2 |     1 | 2행~5행
 행9 | 행 5 |     2 | 2행~5행~9행
(6열)

-- 분기 없음, orderby_fld 없음(결과 순서는 보장되지 않음)
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'row2', 0)
 AS t(keyid 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, level int);
 키ID | 부모_키ID | 레벨
--------+---------------+-------
 행2 |              |     0
 행4 | 행2 |     1
 행 6 | 행4 |     2
 행8 | 행 6 |     3
 행 5 | 행2 |     1
 행9 | 행 5 |     2
(6열)

-- 분기 포함, orderby_fld 포함(row5가 row4 앞에 옴에 유의)
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')
 AS t(keyid 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, 레벨 int, 분기 메이저 토토 사이트, pos int);
 키ID | 부모_키ID | 수준 |       지점 | 포스
------+---------------+-------+---------+-----
 행2 |              |     0 | 행2 |   1
 행 5 | 행2 |     1 | 2행~5행 |   2
 행9 | 행 5 |     2 | 행2~행5~행9 |   3
 행4 | 행2 |     1 | 2행~4행 |   4
 행 6 | 행4 |     2 | 행2~행4~행6 |   5
 행8 | 행 6 |     3 | 행2~행4~행6~8행 |   6
(6열)

-- 분기 없음, orderby_fld 사용(row5가 row4 앞에 옴에 유의)
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0)
 AS t(keyid 메이저 토토 사이트, parent_keyid 메이저 토토 사이트, level int, pos int);
 키ID | 부모_키ID | 수준 | 포스
------+---------------+---------+-----
 행2 |              |     0 |   1
 행 5 | 행2 |     1 |   2
 행9 | 행 5 |     2 |   3
 행4 | 행2 |     1 |   4
 행 6 | 행4 |     2 |   5
 행8 | 행 6 |     3 |   6
(6행)

F.36.2. 작성자

조 콘웨이