PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Câu lệnh SQL đệ quy (Postgresql) - phiên bản đơn giản hóa

Thiết lập thử nghiệm:

CREATE TEMP TABLE matrix (
    rowindex integer,
    columnindex integer,
    matrixvalue numeric);

INSERT INTO matrix VALUES
 (1,1,2),(1,2,2),(1,3,3),(1,4,3),(1,5,4)
,(2,1,4),(2,2,4),(2,3,5),(2,4,6)
,(3,1,3),(3,2,2),(3,3,2)
,(4,1,2),(4,2,1)
,(5,1,1);

Chạy INSERT trong LOOP với DO :

DO $$
BEGIN

FOR i IN 2 .. 5 LOOP
   FOR j IN 7-i .. 5 LOOP
      INSERT INTO matrix
      VALUES (i,j, (
         SELECT sum(matrixvalue)/2
         FROM   matrix
         WHERE  (rowindex, columnindex) IN ((i-1, j),(i, j-1))
         ));
   END LOOP;
END LOOP;

END;
$$

Xem kết quả:

SELECT * FROM matrix order BY 1,2;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trong môi trường nhiều máy chủ, nếu một trang web không hoạt động trong hơn 15 triệu, máy chủ sẽ mất kết nối với cơ sở dữ liệu PostgreSQL

  2. Postgresql:xóa khoảng trắng giữa các loại chữ số nhất định

  3. Làm cách nào để chèn vào bảng giá trị từ hai mảng trong Postgres?

  4. PostgreSQL:Chọn dữ liệu có tương tự trên trường dấu thời gian

  5. Cách trích xuất giờ từ truy vấn trong postgres