Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Phụ lục F. cách đọc kèo bóng đá mô -đun được cung cấp bổ sung | NEXT |
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.
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 , crosstab3 vàcrosstab4 được xác định trước, nhưng bạn có thể
Tạo bổ sungcrosstabn cá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ủa |
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 |
bình thường_rand
13237_13314
bình thường_rand
Sả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)
crosstab (văn bản)
crosstab (văn bản SQL) crosstab (văn bản SQL, int n)
Thecrosstab
Hà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 ... ...
Thecrosstab
Hà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
Thecrosstab
Hà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.
Thecrosstab
Hà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ằngcrosstab
Bả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.
crosstabn(văn bản)
crosstabn(văn bản SQL)
Thecrosstabn
cá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 chungcrosstab
Hà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
, crosstab3
vàcrosstab4
, 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_NAMEvàgiá 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 chungcrosstab
chứ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ảncrosstab
c 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
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ủacrosstab
Có 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ủacrosstab
Xử 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ạivàgiá 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_NAMEvà25380_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_sqllà 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
Thecrosstab
Hà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.
Thecrosstab
Hà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.
Connectby
32455_32618
TheConnectby
Hà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.Connectby
Có 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.Connectby
tham 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.
TheConnectby
Hà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àConnectby
Tạ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_37646Connectby
Có 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
Joe Conway