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
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 |