sql >> Database >  >> RDS >> PostgreSQL

Hoe alle combinaties (subset) van elke grootte van een array te vinden in postgresql

De volgende functie produceert alle combinaties van de gevraagde grootte als een reeks rijen met één combinatie per rij:

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;

Deze functie is polymorf in het arraytype.




  1. hoe stuur e-mail door Pl/sql

  2. Staat MySQL toe om een ​​database met punt te maken?

  3. SQLite Beschrijf Tabel

  4. Hoe te controleren of een string een geldige DATE, TIME of DATETIME is