Vamos a intentar explicar que pasos tenemos que seguir para seleccionar una muestra aleatoria de una base de datos access. Para ello lo primero que tenemos que hacer es crear un campo que contenga dicha aleatoriedad.

En mi caso siempre creo la aleatoriedad de la misma forma, un sistema un poco largo pero así se asegura la aleatoriedad (por mi trabajo es bastante importante que la muestra sea lo más aleatoria posible)

  • Creo un campo autonumérico que será la semilla del número aleatorio y un campo Aleat Vacío (al que hemos llamado aut).
  • Actualizo el campo aleatorio con la funcion NúmAleat, y usando de semilla el campo autonumérico

Una vez que ya tenemos la aleatoriedad, para seleccionarlo bastaría con abrir el editor de consultas en modo sql y escribir la sentencia

select top 100 * from mitabla order by aleat

Con esta query tendríamos 100 registros aleatorios. ¿Fácil verdad? pues compliquemos un poco más las cosas.

Ahora queremos dividir la base en dos grupos aleatorios (uno de ellos de 100 registros), y escribir el grupo en un campo en la base. Para que quede referencia del grupo al que pertenece el registro

La forma de crear la aleatoriedad es la misma. Además creamos un campo que se llame Grupo que será el que modifiquemos para categorizar los registros.

y lo actualizamos de la siguiente forma

<=(SELECT Max(Maximo) AS NumeroMax FROM (select TOP 100 mitabla.aleat as Maximo from mytabla order by Aleat Asc) )

Si analizamos la query vemos que lo que hacemos es coger el número aleatorio más alto de los 100 primeros registros, este es el número que nos indica el límite inferior de la selección, lo que hace que se marquen 100 registros.

Luego actualizariamos los que fueran nulos a grupo II y ya tendríamos los grupos hechos.

Interesante verdad? pero la verdad es que esto esta limitado, porque tenemos que meter el número de registros que queremos meter a fuego. Supongamos que queremos dividir en porcentaje, es decir que el 70% de los registros sean del grupo I. para ello usaremos la sentencia en la condicion de actualización de esta forma

<=(SELECT Max(Maximo) AS NumeroMax FROM (select Top 70 PERCENT Mitabla.aleat as Maximo from Mitabla order by Aleat Asc))

Es el propio access el que hace los calculos para marcar el número específico de registros. Actualizamos a “Grupo II” aquellos registros que tengan el Grupo a Nulo y… Caso resuelto 😀

Be Sociable, Share!