muestra..

27/12/2004 - 23:42 por Chente | Informe spam
Que tal Grupo, ojala y alguien sepa como hacer esto porque ya me estoy
volviendo loquito, lo que necesito es sacar el 15% de registros de una
tabla, o sea una muestra de la tabla, donde la muestra debera ser del 15 %.

tengo esto, pero me devuelve mas del 15%

////////////////////////////////////////////////////////////////////////////
////////

declare @maximo int, @minimo int, @registros int, @muestra integer, @hasta
integer

select top 100 *
into #muestra
from tablita

select @registros = count(*) from #muestra

select @maximo = max(nrreporte), @minimo=min(nrreporte) from #muestra

set @muestra = ( round(@registros/(@registros*0.15),1))-1

set @hasta = 1 + round((@registros)*.15,0)*@muestra
select @registros as registros, @maximo as maximo, @minimo as minimo,
@muestra as muestra, @hasta as hasta

select nrreporte, svindice
from #muestra
where (nrreporte-@minimo + 1) % @muestra = 0 and (nrreporte + 1) <(nrreporte+ @hasta)

drop table #muestra

////////////////////////////////////////////////////////////////////////////
////////


Ejemplo: si la tabla tuviera 10 registros y los reportes fueran del 1 al
100, un ejemplo del resultado deseado sería:
3,6,10,11,22,44,46,51,59,66,72,87,89,95,100


Gracias por leer el problema.

MS-SQL2K
SP3a

Saludos.

Vicente López R.
 

Leer las respuestas

#1 Chente
28/12/2004 - 00:05 | Informe spam
Lo del ejemplo de los reportes que iban del 1 al 100 es solo un ejemplo,
porque podria ser tambien que los reportes esten saltaddos, por ejemplo,
344,444,447,490,501,522,552 y asi y sobre eso sacar la muestra.

Gracias.




"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:
Que tal Grupo, ojala y alguien sepa como hacer esto porque ya me estoy
volviendo loquito, lo que necesito es sacar el 15% de registros de una
tabla, o sea una muestra de la tabla, donde la muestra debera ser del 15


%.

tengo esto, pero me devuelve mas del 15%




////////////////////////////////////////////////////////////////////////////
////////

declare @maximo int, @minimo int, @registros int, @muestra integer, @hasta
integer

select top 100 *
into #muestra
from tablita

select @registros = count(*) from #muestra

select @maximo = max(nrreporte), @minimo=min(nrreporte) from #muestra

set @muestra = ( round(@registros/(@registros*0.15),1))-1

set @hasta = 1 + round((@registros)*.15,0)*@muestra
select @registros as registros, @maximo as maximo, @minimo as minimo,
@muestra as muestra, @hasta as hasta

select nrreporte, svindice
from #muestra
where ( + 1) % @muestra = 0 and (nrreporte + 1) <> (nrreporte+ @hasta)

drop table #muestra




////////////////////////////////////////////////////////////////////////////
////////


Ejemplo: si la tabla tuviera 10 registros y los reportes fueran del 1 al
100, un ejemplo del resultado deseado sería:
3,6,10,11,22,44,46,51,59,66,72,87,89,95,100


Gracias por leer el problema.

MS-SQL2K
SP3a

Saludos.

Vicente López R.


Preguntas similares