El 27/01/2012 5:48, Jorge Tornero escribió:
Hola a todos,

Tengo que hacer una selección al azar de una serie de individuos. Estos
individuos los categorizo por fecha de captura y  clase de talla
principalmente. Necesito tomar hasta 17 individuos por cada una de esas
clases de talla. La parte de selección al azar la tengo resuelta
(creo... quizá alguien la vea mal):

Select extract(month from fecha), fecha, clase_talla, numero_individuo
from biologicos group by 1,2,3,4 order by 1,2,3,random();

Ahora bien, dentro de las clases de talla tengo algunas con 2,3... x
individuos, número menor a 17 y otras con pongamos 20, 30, 60
individuos. Como os digo necesito tomar hasta 17 individuos por clase de
talla. En otras palabras:

¿Es posible limitar el número de columnas devueltas por group by, al
estilo de LIMIT pero dentro de los grupos?

Muchas gracias!!!


Jorge Tornero
Instituto Español de Oceanografía
Centro Oceanográfico de Cádiz
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE 
ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com
Mira te recomiendo que utilices CTE para eso con la clausula with y funciones ventanas

_with numeracion as (
select 'tus atributos' , row_number() over (partition by 'tu agrupamiento o clase' ) as numero from 'tu tabla')

select * from numeracion where numero<=17
_
saludos



Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE 
ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com

Responder a