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

Cách tìm tất cả các tổ hợp (tập hợp con) có kích thước bất kỳ của một mảng trong postgresql

Hàm sau tạo ra tất cả các kết hợp của kích thước được yêu cầu dưới dạng tập hợp các hàng với một kết hợp trên mỗi hàng:

create or replace function get_combinations(source anyarray, size int) returns setof anyarray as $$
 with recursive combinations(combination, indices) as (
   select source[i:i], array[i] from generate_subscripts(source, 1) i
   union all
   select c.combination || source[j], c.indices || j
   from   combinations c, generate_subscripts(source, 1) j
   where  j > all(c.indices) and
          array_length(c.combination, 1) < size
 )
 select combination from combinations
 where  array_length(combination, 1) = size;
$$ language sql;

Hàm này đa hình trong kiểu mảng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:ERROR:42601:cần có danh sách định nghĩa cột cho các hàm trả về bản ghi

  2. Theo dõi PostgreSQL với hiệu suất

  3. Tìm kiếm văn bản Django với cập nhật đối sánh từng câu thành django3

  4. Tự động tạo DAG dựa trên Hàng có sẵn trên Kết nối DB

  5. Lệnh Postgresql COPY đưa ra lỗi bị từ chối Quyền