PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana menemukan semua kombinasi (subset) dari berbagai ukuran array di postgresql

Fungsi berikut menghasilkan semua kombinasi ukuran yang diminta sebagai kumpulan baris dengan satu kombinasi per baris:

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;

Fungsi ini polimorfik dalam tipe array.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tipe data Postgres ENUM atau CHECK CONSTRAINT?

  2. Bagaimana EDB Menjadi Pemimpin di Pasar Postgres

  3. Django:IntegrityError selama Many To Many add()

  4. Bagaimana cara menggunakan case-when di Ecto Query di elixir?

  5. Batasan kunci asing dalam hubungan banyak-ke-banyak