Re: Secret Santa List - Mailing list pgsql-general

From Lou Duchez
Subject Re: Secret Santa List
Date
Msg-id 567AD13D.4070700@paprikash.com
Whole thread Raw
In response to Re: Secret Santa List  (David Rowley <david.rowley@2ndquadrant.com>)
List 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!




pgsql-general by date:

Previous
From: John R Pierce
Date:
Subject: Re: Shared system resources
Next
From: Alexander Franca Fernandes
Date:
Subject: Re: Huge delay to finish even having all the records inserted