Necesito seleccionar filas al azar. Ej: Supongamos, una tabla consiste en 100 registros, pero necesito obtener solo 20 registros de esos 100 registros y la selección de registros será al azar ... ¿cómo saldré de allí? Estoy usando Oracle como mi DB. cualquier sugerencia me ayudaría mucho. Gracias de antemano ..¿Cómo obtener registros al azar de la base de datos de Oracle?
Respuesta
SELECT *
FROM (
SELECT *
FROM table
ORDER BY DBMS_RANDOM.VALUE)
WHERE rownum < 21;
SELECT column FROM
(SELECT column, dbms_random.value FROM table ORDER BY 2)
where rownum <= 20;
Para seleccionar al azar 20 filas Creo que sería mejor que la selección de la gran cantidad de ellos ordenó al azar y la selección de los primeros 20 de ese conjunto.
Algo así como:
Select *
from (select *
from table
order by dbms_random.value) -- you can also use DBMS_RANDOM.RANDOM
where rownum < 21;
Usar de preferencia para mesas pequeñas para evitar la selección de grandes cantidades de datos sólo para deshacerse de la mayor parte de ella.
SAMPLE() no es garantizado para darle exactamente 20 filas, pero podría ser adecuado (y pueden realizar significativamente mejor que una consulta completa + clasificación por azar para tablas de gran tamaño):
SELECT *
FROM table SAMPLE(20);
Nota : el 20
aquí es un porcentaje aproximado, no el número de filas deseado. En este caso, como tiene 100 filas, para obtener aproximadamente 20 filas, solicita una muestra del 20%.
muestra es rápido pero no parece ser muy aleatorio. los registros hacia la parte superior/principio de la tabla tienden a ser favorecidos. – craigrs84
eso sucederá si detiene la consulta antes de que llegue a toda la tabla. –
Lamento haber cometido un error, su publicación está bien y los resultados se distribuyen por igual. Es cuando agrega "where rownum <= 20" en combinación con la muestra (20) que los datos comienzan a ser menos aleatorios. – craigrs84
SELECT * FROM table SAMPLE(10) WHERE ROWNUM <= 20;
Esto es más eficiente, ya que no necesita ordenar la tabla.
Detener la muestra después de 20 filas dará como resultado resultados no aleatorios (las filas que se encuentran antes en la tabla se devolverán con mucha más frecuencia que las posteriores). Además, esto no garantiza devolver 20 filas. –
- 1. Cómo insertar 1 millón de filas al azar en la base de datos de tablas Oracle
- 2. Enlace de la base de datos Oracle
- 3. Cakephp - seleccionar al azar de la base de datos y Ver
- 4. En Oracle, ¿cómo se cambia la base de datos 'predeterminada'?
- 5. ¿Cómo obtener el rango entero al azar de mysql?
- 6. mysql selecciona SOLAMENTE registros duplicados de la base de datos
- 7. cómo almacenar valores BigInteger en la base de datos Oracle
- 8. ¿Cómo generar programáticamente DDL desde la base de datos Oracle?
- 9. compilación falla al azar: "no se puede abrir la base de datos del programa"
- 10. ¿Cómo obtener todos los registros de CoreData Base utilizando NSManagedObjectSubClass?
- 11. Insertar datos en la base de datos Oracle utilizando php
- 12. Node.js + Base de datos Oracle 9i
- 13. Eliminar registros más antiguos de la base de datos
- 14. ¿Cómo llegar al esquema de la base de datos de una base de datos oculta?
- 15. ¿Cómo iniciar sesión en una base de datos Oracle?
- 16. Obtener un booleano al azar en python?
- 17. Cómo hacer una copia de seguridad y restaurar la base de datos ORACLE 11g Como la base de datos SQL2005
- 18. Oracle SELECCIONAR 10 registros principales
- 19. Encontrar huecos (registros faltantes) en los registros de la base de datos usando SQL
- 20. Encontrar restricción fantasma de la base de datos Oracle
- 21. ¿Cómo seleccionar los primeros registros 'N' de una base de datos que contiene millones de registros?
- 22. Error al tirar de la base de datos mysql en la base de datos mysql local
- 23. ¿Cómo obtener una lista de 10 objetos únicos al azar con Hibernate?
- 24. selectas filas al azar a través de la APP
- 25. ¿Cómo puedo obtener un producto cartesiano al azar en PostgreSQL?
- 26. Autoincrement clave principal en la base de datos Oracle
- 27. Cómo asignar al azar filas de Excel
- 28. ¿Cómo conectar Android al servidor de base de datos MySql?
- 29. Uso de la sugerencia de Oracle "FIRST_ROWS" para mejorar las prestaciones de la base de datos Oracle
- 30. ¿Cómo agregar nuevos campos y registros a la base de datos de registros de llamadas (historial de llamadas)?
¿No debería ser 'DBMS_RANDOM.VALUE'? – Filburt
Eso también funciona. – cagcowboy
Dale un golpe. Sin embargo, esto solo seleccionará las primeras 20 filas de la tabla y las ordenará al azar. –