Re: order by random?

From: "manuel lamas" <manuel3w(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: order by random?
Date: 2006-03-22 18:43:52
Message-ID: BAY103-F8757ADEDD5AFA4F25F31D95D90@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>>>saludos, existe alguna forma de obternet un numero defimido de filas de
>>>una tabla pero con la condicion que sean totalmente aleatorias, con un
>>>ejemplo tavez quede claro:
>>>
>>>tengo una fila con tickets de prepago de diferente denominaciones, en
>>>cantidades diferentes de cada denominacion, por decir 40000 de $1, 250000
>>>de $3, 10000 $20 ,etc
>>>entre todos suman 30000, quiero obtener el 25$ de ellos para una
>>>promocion y duplicarles el saldo, pero obviamente los ganadores deben ser
>>>lo mas aleatoriamente posible,
>>>ya busque en el manual y no existe la opcion random en el limit, alguien
>>>ha hecho algo como
>>>
>>>select ticket from ticket limit 75000 order random
>>>
>>>atte
>>>---
>>>miguel
>>
>>
>>Es asi:
>>
>>select ticket from ticket ORDER BY random() LIMIT 75000;
>>
>>Saludos
>>
>>Manuel
>>
>>
>Manuel, el select no devolvera los primeros 75000 y luego los ordenara
>aleatoriamente (o mas bien los desordenara) ?
>lo que yo quiero es que de los 300000 escoja 75000 en forma totalmente
>aleatoria, de los ultimos , de en medio , de primero, etc, ya que en la
>tabla se cargaron en diferentes dias , asi que estan primero 5000 de $1,
>1400 de $20, 12000 de $3, 4000 de $20, etc
>
>---
>Saludos

No se si entiendo bien. Si lo que quieres es:

5000 números a $1
1400 números a $20
12000 números a $3 .... etc

para que hagan una cifra de $x en total

y que estos números salgan ordenados aleatoriamente sobres les 300'000
números.

Lo que se me ocurre es:

SELECT T.no_ticket

FROM
(
(SELECT no_ticket FROM TICKET WHERE valor = '1' ORDER BY random() LIMIT
5000)
UNION
(SELECT no_ticket FROM TICKET WHERE valor = '20' ORDER BY random() LIMIT
1400)
UNION
(SELECT no_ticket FROM TICKET WHERE valor = '3' ORDER BY random() LIMIT
12000)
) AS T

ORDER BY random() ;

No te olvides los "(" y los ")" porque si no no funciona.

Saludos

Manuel

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-03-22 18:44:04 Re: order by random?
Previous Message Martin Marques 2006-03-22 18:43:49 Re: Instalacion en Solaris