Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong cách đọc kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

cách đọc kèo bóng đáF.41. bảng

ThebảngMô -đun bao gồm cách đọc kèo bóng đá chức năng khác nhau trả về bảng (nghĩa là nhiều hàng). cách đọc kèo bóng đá chức năng này hữu ích cả theo cách riêng của chúng và là Ví dụ về cách viết cách đọc kèo bóng đá chức năng C trả về nhiều hàng.

F.41.1. cách đọc kèo bóng đá chức năng được cung cấp

Bảng F-29Hiển thị cách đọc kèo bóng đá chức năng được cung cấp bởiBảng điều khiểnMô -đun.

Bảng F-29.Bảng điều khiểnChức năng

chức năng return Mô tả
bình thường_rand (int numvals, float8 trung bình, float8 stddev) setof float8 Sản xuất một tập hợp ngẫu nhiên phân phối bình thường Giá trị
crosstab (văn bản SQL) Setof Record Sản xuất A"Bảng Pivot"chứa tên hàng cộng vớincách đọc kèo bóng đá giá trị, trong đónđược xác định bởi loại hàng được chỉ định trong truy vấn gọi
crosstabn(văn bản SQL) setof bảng_crosstab_n Sản xuất A"Bảng Pivot"chứa tên hàng cộng vớincách đọc kèo bóng đá giá trị.crosstab2, crosstab3crosstab4được xác định trước, nhưng bạn có thể Tạo bổ sungcrosstabncách đọc kèo bóng đá chức năng như mô tả dưới
crosstab (văn bản Source_sql, Text Category_SQL) SETOF Record Sản xuất A"Bảng Pivot"Với cách đọc kèo bóng đá cột giá trị được chỉ định bởi truy vấn thứ hai
crosstab (văn bản SQL, int N) SETOF Record

Phiên bản lỗi thời củacrosstab (văn bản). Tham sốnhiện bị bỏ qua, Vì số lượng cách đọc kèo bóng đá giá trị luôn luôn được xác định bởi truy vấn gọi

12653_12830 Setof Record Sản xuất một đại diện của một cây phân cấp kết cấu

F.41.1.1.bình thường_rand

13237_13314

bình thường_randSản xuất một tập hợp của cách đọc kèo bóng đá giá trị ngẫu nhiên phân phối bình thường (Gaussian phân bổ).

numvalslà số lượng giá trị được trả về từ chức năng.trung bìnhlà trung bình của phân phối bình thường của cách đọc kèo bóng đá giá trị vàSTDDEVlà Độ lệch chuẩn của phân phối giá trị bình thường.

Ví dụ: cuộc gọi này yêu cầu 1000 giá trị với giá trị trung bình của 5 và độ lệch chuẩn là 3:

test =# Chọn * từ bình thường_rand (1000, 5, 3);
     bình thường_rand
--------------------------
     1.56556322244898
     9.10040991424657
     5.36957140345079
   -0.369151492880995
    0.283600703686639
       .
       .
       .
     4.82992125404908
     9.71308014517282
     2.49639286969028
(1000 hàng)

F.41.1.2.crosstab (văn bản)

crosstab (văn bản SQL)
crosstab (văn bản SQL, int n)

ThecrosstabHàm là Được sử dụng để sản xuất"Pivot"Hiển thị, trong đó dữ liệu được liệt kê trên trang thay vì xuống. Vì Ví dụ, chúng ta có thể có dữ liệu như

14757_14852

mà chúng tôi muốn hiển thị như

ROW1 Val11 Val12 Val13 ...
ROW2 Val21 Val22 Val23 ...
...

ThecrosstabHàm lấy tham số văn bản là truy vấn SQL tạo dữ liệu thô được định dạng theo cách đầu tiên và tạo cách đọc kèo bóng đá một bảng được định dạng trong cách thứ hai.

TheSQLtham số là SQL Tuyên bố tạo cách đọc kèo bóng đá bộ dữ liệu nguồn. Cái này câu lệnh phải trả về mộtROW_NAMEcách đọc kèo bóng đá, mộtthể loạicách đọc kèo bóng đá và mộtgiá trịcách đọc kèo bóng đá.nlà một tham số lỗi thời, bị bỏ qua nếu được cung cấp (trước đây phải khớp với số lượng cách đọc kèo bóng đá giá trị đầu ra, nhưng bây giờ được xác định bởi truy vấn gọi điện).

Ví dụ: truy vấn được cung cấp có thể tạo cách đọc kèo bóng đá một bộ một cái gì đó như:

15899_16155

ThecrosstabHàm là tuyên bố trả lạiSetof Record, Vì vậy, Tên và loại thực tế của cách đọc kèo bóng đá cột đầu ra phải được xác định trongtừmệnh đề của cuộc gọiChọnCâu lệnh, ví dụ:

Chọn * từ crosstab ('...' ') dưới dạng CT (ROW_NAME TEX

Ví dụ này tạo cách đọc kèo bóng đá một thứ gì đó như:

<== Giá trị cách đọc kèo bóng đá ==
 ROW_NAME CAGETORY_1 CAGETORY_2
----------+------------+------------
  Hàng1 val1 val2
  Row2 Val5 Val6

Thetừmệnh đề phải xác định đầu cách đọc kèo bóng đá là mộtROW_NAMEcách đọc kèo bóng đá (của cùng loại dữ liệu với cách đọc kèo bóng đá kết quả đầu tiên của SQL truy vấn) theo sau là ngiá trịCột (tất cả cách đọc kèo bóng đá loại dữ liệu giống như cột kết quả thứ ba của truy vấn SQL). Bạn có thể thiết lập càng nhiều giá trị đầu ra cách đọc kèo bóng đá cột như bạn muốn. Tên của cách đọc kèo bóng đá cột đầu ra đã lên cho bạn.

ThecrosstabHàm tạo cách đọc kèo bóng đá một hàng đầu cách đọc kèo bóng đá cho mỗi nhóm đầu vào liên tiếp hàng có cùngROW_NAMEGiá trị. Nó điền vào đầu cách đọc kèo bóng đágiá trịcách đọc kèo bóng đá, từ trái sang phải, vớigiá trị17710_17800giá trị17839_17968

Trong thực tế, truy vấn SQL phải luôn chỉ địnhĐặt hàng bằng 1,2Để đảm bảo rằng cách đọc kèo bóng đá hàng đầu vào là được đặt hàng đúng cách, nghĩa là cách đọc kèo bóng đá giá trị có cùngROW_NAMEđược kết hợp với nhau và đặt hàng chính xác trong hàng. Lưu ý rằngcrosstabBản thân nó không chú ý đến cách đọc kèo bóng đá thứ hai của kết quả truy vấn; Nó chỉ ở đó để được đặt hàng bởi, để kiểm soát thứ tự trong đó cách đọc kèo bóng đá thứ ba giá trị xuất hiện trên trang.

Đây là một ví dụ hoàn chỉnh:

18616_19655

Bạn có thể tránh luôn phải viết cách đọc kèo bóng đátừmệnh đề để xác định cách đọc kèo bóng đá cột đầu ra, bằng cách Thiết lập chức năng crosstab tùy chỉnh có mong muốn Loại hàng đầu ra có dây vào định nghĩa của nó. Điều này được mô tả Trong phần tiếp theo. Một khả năng khác là nhúng yêu cầutừmệnh đề trong chế độ xem sự định nghĩa.

F.41.1.3.crosstabn(văn bản)

crosstabn(văn bản SQL)

Thecrosstabncách đọc kèo bóng đá chức năng là ví dụ về cách Để thiết lập trình bao bọc tùy chỉnh cho chungcrosstabHàm, để bạn không cần ghi tên và loại cách đọc kèo bóng đá trong cuộc gọiChọnTruy vấn. TheTableFuncMô -đun bao gồmcrosstab2, crosstab3crosstab4, có loại hàng đầu cách đọc kèo bóng đá là được định nghĩa là

21011_21166

Do đó, cách đọc kèo bóng đá chức năng này có thể được sử dụng trực tiếp khi đầu vào Truy vấn sản xuấtROW_NAMEgiá trịcách đọc kèo bóng đá loạiTextvà bạn muốn 2, 3 hoặc 4 giá trị đầu ra cột. Theo tất cả cách đọc kèo bóng đá cách khác, họ cư xử chính xác như mô tả Trên cho chungcrosstabchức năng.

Ví dụ, ví dụ được đưa cách đọc kèo bóng đá trong phần trước cũng sẽ hoạt động như

Chọn *
Từ crosstab3 (
  'Chọn RowID, Thuộc tính, Giá trị
   từ CT
   trong đó thuộc tính = '' att2 '' hoặc thuộc tính = '' att3 ''
   đặt hàng theo 1,2 ');

Những chức năng này được cung cấp chủ yếu để minh họa mục đích. Bạn có thể tạo cách đọc kèo bóng đá loại và chức năng trả về của riêng bạn dựa trên cơ bảncrosstab ()Hàm. Có hai cách để làm điều đó:

  • Tạo loại tổng hợp mô tả đầu ra mong muốn cách đọc kèo bóng đá cột, tương tự như cách đọc kèo bóng đá ví dụ trong22292_22330. Sau đó xác định tên chức năng duy nhất chấp nhận mộtTexttham số và trả vềsetof your_type_name, nhưng liên kết đến cùng một cơ bảncrosstabc Hàm. Ví dụ, nếu Dữ liệu nguồn của bạn tạo cách đọc kèo bóng đá tên hàng làTextvà cách đọc kèo bóng đá giá trị làfloat8và bạn muốn 5 cách đọc kèo bóng đá giá trị:

    Tạo loại my_crosstab_float8_5_cols AS (
        văn bản my_row_name,
        my_c Category_1 float8,
        my_c Category_2 float8,
        my_c Category_3 float8,
        my_c Category_4 float8,
        my_carget_5 float8
    );
    
    Tạo hoặc thay thế hàm crosstab_float8_5_cols (văn bản)
        Trả về setof my_crosstab_float8_5_cols
        Như '$ libdir/pablefunc', 'crosstab' ngôn ngữ c ổn định;
  • sử dụngouttham số cần xác định loại trả về ngầm. Ví dụ tương tự cũng có thể được thực hiện theo cách này:

    23460_23788

F.41.1.4.crosstab (văn bản, chữ)

crosstab (text Source_sql, text category_sql)

Giới hạn chính của dạng tham số đơn củacrosstabCó phải nó điều trị tất cả cách đọc kèo bóng đá giá trị trong một nhóm giống nhau, chèn từng giá trị vào giá trị đầu tiên Cột có sẵn. Nếu bạn muốn cách đọc kèo bóng đá cột giá trị tương ứng đến cách đọc kèo bóng đá danh mục dữ liệu cụ thể và một số nhóm có thể không Có dữ liệu cho một số danh mục, không hoạt động tốt. Dạng hai tham số củacrosstabXử lý trường hợp này bằng cách cung cấp Danh sách rõ ràng cách đọc kèo bóng đá danh mục tương ứng với đầu ra cách đọc kèo bóng đá cột.

Source_SQLlà câu lệnh SQL Điều đó tạo cách đọc kèo bóng đá bộ dữ liệu nguồn. Tuyên bố này phải trả về mộtROW_NAMEcách đọc kèo bóng đá, mộtthể loạicách đọc kèo bóng đá và mộtgiá trịcách đọc kèo bóng đá. Nó cũng có thể có một hoặc nhiều"Extra"cách đọc kèo bóng đá. TheROW_NAMEcách đọc kèo bóng đá phải là đầu tiên. Thethể loạigiá trịCột phải là hai cột cuối cùng cách đọc kèo bóng đá cột, theo thứ tự đó. Bất kỳ cột nào giữaROW_NAME25380_25390được coi là"Extra". The"Extra"cách đọc kèo bóng đá cột dự kiến ​​sẽ giống nhau cho tất cả cách đọc kèo bóng đá hàng có cùngROW_NAMEGiá trị.

Ví dụ,Source_SQL25683_25727

chọn hàng_name, Extra_col, Cat, giá trị từ thứ tự foo bằng 1;

 Row_name Extra_col Cat Value
----------+------------+-----+---------
  ROW1 Extra1 Cat1 Val1
  ROW1 Extra1 Cat2 Val2
  ROW1 Extra1 Cat4 Val4
  Row2 Extra2 Cat1 Val5
  Row2 Extra2 Cat2 Val6
  Row2 Extra2 Cat3 Val7
  Row2 Extra2 Cat4 Val8

category_sql​​là câu lệnh SQL Điều đó tạo ra tập hợp cách đọc kèo bóng đá loại. Tuyên bố này phải Chỉ trả về một cột. Nó phải sản xuất ít nhất một hàng, hoặc Một lỗi sẽ được tạo ra. Ngoài ra, nó không được sản xuất cách đọc kèo bóng đá giá trị trùng lặp hoặc lỗi sẽ được tạo.category_sqlcó thể là một cái gì đó như:

Chọn con mèo khác biệt với thứ tự foo bằng 1;
    con mèo
  -------
    CAT1
    CAT2
    CAT3
    Cat4

ThecrosstabHàm là tuyên bố trả lại26811_26825, Vì vậy, Tên và loại thực tế của cách đọc kèo bóng đá cột đầu ra phải được xác định trongtừmệnh đề của cuộc gọiChọnCâu lệnh, ví dụ:

Chọn * từ crosstab ('...', '...')
    Như CT (ROW_NAME TEXT, Text Text, Cat1 Text, Cat2 Text, Cat3 Text, Cat4 Text);

Điều này sẽ tạo cách đọc kèo bóng đá kết quả như:

<== cách đọc kèo bóng đá giá trị ==
Row_Name Extra Cat1 Cat2 Cat3 Cat4
---------+-------+------+------+------+------
  ROW1 Extra1 Val1 Val4
  Row2 Extra2 Val5 Val6 Val7

Thetừmệnh đề phải xác định Số lượng cột đầu ra thích hợp của cách đọc kèo bóng đá loại dữ liệu thích hợp. Nếu như Cóncách đọc kèo bóng đá trongSource_SQLKết quả của truy vấn, The Đầu tiênn-2 trong số chúng phải phù hợp lên với đầu tiênn-2 đầu ra cột. cách đọc kèo bóng đá cột đầu ra còn lại phải có loại Cột cuối cùng củaSource_SQLKết quả của truy vấn và phải có chính xác như nhiều trong số chúng Có hàng trongcategory_sqlKết quả của truy vấn.

ThecrosstabHàm tạo cách đọc kèo bóng đá một hàng đầu cách đọc kèo bóng đá cho mỗi nhóm đầu vào liên tiếp hàng có cùngROW_NAMEGiá trị. Đầu cách đọc kèo bóng đáROW_NAMEcách đọc kèo bóng đá, cộng với bất kỳ"Extra"cách đọc kèo bóng đá, được sao chép từ hàng đầu tiên của nhóm. Đầu ragiá trịcách đọc kèo bóng đá cột được lấp đầy bằng Thegiá trịcách đọc kèo bóng đá trường từ cách đọc kèo bóng đá hàng Có phù hợpthể loạiGiá trị. Nếu một hàngthể loạiKhông khớp với bất kỳ đầu cách đọc kèo bóng đá nào củacategory_sqlTruy vấn, nógiá trịbị bỏ qua. cách đọc kèo bóng đá cột đầu ra có danh mục phù hợp không có trong bất kỳ hàng đầu vào nào của nhóm chứa đầy nulls.

Trong thực tếSource_SQLTruy vấn phải luôn chỉ địnhThứ tự bởi 1Để đảm bảo rằng cách đọc kèo bóng đá giá trị có cùngROW_NAMEđược kết hợp với nhau. Tuy nhiên, Đặt hàng cách đọc kèo bóng đá danh mục trong một nhóm không quan trọng. Ngoài ra, điều cần thiết là phải chắc chắn rằng thứ tự củacategory_sqlđầu ra của truy vấn khớp với thứ tự cách đọc kèo bóng đá đầu ra được chỉ định.

Đây là hai ví dụ hoàn chỉnh:

29695_30622
30661_31921

Bạn có thể tạo cách đọc kèo bóng đá chức năng được xác định trước để tránh phải Viết ra cách đọc kèo bóng đá tên và loại kết quả trong mỗi truy vấn. Xem cách đọc kèo bóng đá ví dụ trong phần trước. cách đọc kèo bóng đá cơ bản c chức năng cho hình thức nàycrosstabđược đặt têncrosstab_hash.

F.41.1.5.Connectby

32455_32618

TheConnectbyHàm tạo ra một màn hình hiển thị dữ liệu phân cấp được lưu trữ trong một bàn. Bảng phải có một trường chính một cách duy nhất xác định cách đọc kèo bóng đá hàng và trường cha mẹ tham chiếu cha mẹ (nếu có) của mỗi hàng.ConnectbyCó thể hiển thị cây con đi xuống từ bất kỳ hàng nào.

Bảng F-30Giải thích cách đọc kèo bóng đá tham số.

Bảng F-30.Connectbytham số

tham số Mô tả
Relname Tên của mối quan hệ nguồn
keyid_fld Tên của trường chính
Parent_Keyid_FLD Tên của trường cha mẹ
OrderBy_FLD Tên của trường để đặt hàng anh chị em (không bắt buộc)
start_with Giá trị khóa của hàng để bắt đầu tại
MAX_DEPTH Độ sâu tối đa để xuống hoặc không cho Độ sâu không giới hạn
cành_delim Chuỗi để tách cách đọc kèo bóng đá phím với đầu ra nhánh (không bắt buộc)

cách đọc kèo bóng đá trường khóa và cha mẹ có thể là bất kỳ loại dữ liệu nào, nhưng Họ phải là cùng một loại. Lưu ý rằngstart_withGiá trị phải được nhập dưới dạng văn bản Chuỗi, bất kể loại trường chính.

TheConnectbyHàm là tuyên bố trả lạiSetof Record, Vì vậy, Tên và loại thực tế của cách đọc kèo bóng đá cột đầu ra phải được xác định trongtừmệnh đề của cuộc gọiChọnCâu lệnh, ví dụ:

35443_35610

Hai cách đọc kèo bóng đá đầu ra đầu tiên được sử dụng cho dòng điện Khóa của hàng và khóa hàng của nó; Họ phải phù hợp với loại của trường chính của bảng. cách đọc kèo bóng đá đầu ra thứ ba là Độ sâu trong cây và phải thuộc loạiSố nguyên. Nếu acành_delimtham số đã được đưa ra, tiếp theo cách đọc kèo bóng đá đầu ra là màn hình chi nhánh và phải loạiText. Cuối cùng, nếu mộtOrderBy_FLDtham số đã được đưa ra, lần cuối cùng cách đọc kèo bóng đá đầu ra là số sê -ri và phải thuộc loạiSố nguyên.

The"Chi nhánh"Cột đầu ra Hiển thị đường dẫn của cách đọc kèo bóng đá phím được thực hiện để đạt đến hàng hiện tại. cách đọc kèo bóng đá cách đọc kèo bóng đá khóa được phân tách bằng được chỉ địnhcành_delimChuỗi. Nếu không có màn hình chi nhánh là muốn, bỏ qua cảcành_delimTham số và cách đọc kèo bóng đá nhánh trong cách đọc kèo bóng đá đầu ra danh sách.

Nếu thứ tự của anh chị em cùng cha mẹ quan trọng, bao gồmOrderBy_FLDTham số để chỉ định trường nào để đặt hàng anh chị em. Cái này Trường có thể thuộc bất kỳ loại dữ liệu có thể sắp xếp. cách đọc kèo bóng đá đầu ra Danh sách phải bao gồm một cách đọc kèo bóng đá số nối tiếp số nguyên cuối cùng, nếu Và chỉ khiOrderBy_FLDIS được chỉ định.

cách đọc kèo bóng đá tham số đại diện cho bảng và tên trường là đã sao chép as-is vào cách đọc kèo bóng đá truy vấn SQL màConnectbyTạo nội bộ. Vì thế, Bao gồm cách đọc kèo bóng đá trích dẫn kép nếu cách đọc kèo bóng đá tên được hỗn hợp hoặc chứa ký tự đặc biệt. Bạn cũng có thể cần phải trình độ sơ đồ Tên bảng.

37412_37511

Điều quan trọng là làcành_delim37595_37646ConnectbyCó thể Báo cáo không chính xác một lỗi thu được vô hạn. Lưu ý rằng nếucành_delimkhông được cung cấp, A Giá trị mặc định của~được sử dụng cho Mục đích phát hiện đệ quy.

Đây là một ví dụ:

37990_40806

F.41.2. Tác giả

Joe Conway