none
Consulta Aleatoria de Registros Unicos RRS feed

  • Pregunta

  • Que tal, 

    requiero su apoyo ya que necesito sacar una muestra estadistica aleatoria de una BD de unos 100 millones de registros y requiero que la consulta de la muestra contenga maximo 3 millones de registros y minimo 2.8 millones.

    ¿hay manera o codigo que me genere aleatorios unicos, que pueda seleccionar su interalo de aleatoriedad y como extra, que le pueda dar cuantos numeros aleatorios requiero?

    ya probe darle intervalos, pero no se como hacer que se ejecute 3 millones de veces y se guarde el numero generado cada vez 

    'Crear variables para los rangos del aleatorio'
    Declare @Random INT;
    Declare @UPPER INT;
    Declare @LOWER INT

    'Crear los numeros aleatorios'
    SET @LOWER = 1 'rango minimo'
    SET @UPPER = 100000000  'rango maximo'
    SELECT @Random = ROUND(((@UPPER - @LOWER - 1)*RAND() +@LOWER),0)
    SELECT @Random

    ya probe consultar un percentil de mi tabla pero no me da el numero de registros que requiero, siempre me da muchos registros de mas.

    * SELECT FROM TablaXXX
    WHERE (ABS (CAST ((BINARY_CHECKSUM (*) *  RAND ()) AS int))% 100) < 3

    por favor ayuda.

    viernes, 10 de marzo de 2017 23:49

Respuestas

  • ManoloUgi,

    ¿Conoces la función NEWID()? La función NEWID() genera un identificador único por cada fila por lo que bastaría con:

    SELECT TOP(3000000) * FROM NombreTabla ORDER BY NEWID();
    


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 11 de marzo de 2017 0:25