Re: Secret Santa List

From: Lou Duchez <lou(at)paprikash(dot)com>
To:
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Secret Santa List
Date: 2015-12-23 16:52:13
Message-ID: 567AD13D.4070700@paprikash.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


> Why not generate the required results in a SELECT then update from
> that. row_number() could allow you to generate a random number to each
> giver, then we can generate another random number and join to each
> random number. That'll give you a giver and recipient combination.
>
> e.g:
>
> select giver,recipient from
> (select row_number() over (order by random()) rn, giver from
> secretsanta) g
> inner join
> (select row_number() over (order by random()) rn, giver recipient from
> secretsanta) r on g.rn = r.rn
>
> You can then wrap that up in a CTE, something along the lines of:
>
> with cte (giver, recipient) as (
> select giver,recipient from
> (select row_number() over (order by random()) rn, giver from
> secretsanta) g
> inner join
> (select row_number() over (order by random()) rn, giver recipient from
> secretsanta) r on g.rn = r.rn
> )
> update secretsanta set recipient = cte.recipient from cte WHERE
> cte.giver = secretsanta.giver;
>
Hey, I think that works! Thanks!

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Alexander Franca Fernandes 2015-12-23 16:52:50 Re: Huge delay to finish even having all the records inserted
Previous Message John R Pierce 2015-12-23 16:48:16 Re: Shared system resources