sql >> Base de Datos >  >> RDS >> PostgreSQL

Necesito una función para seleccionar 88 filas aleatorias de una tabla (sin duplicados)

Aquí tienes una solución rápida que te puede gustar:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Como referencia, TABLESAMPLE está en los documentos para SELECT:https://www. postgresql.org/docs/current/sql-select.html

Aquí hay una descripción bastante buena de la función:

https://www.2ndquadrant.com/ es/blog/tablesample-in-postgresql-9-5-2/

...y otro artículo sobre el tema general del muestreo aleatorio del mismo autor:

https://www. 2ndquadrant.com/en/blog/tablesample-and-other-methods-for-get-random-tuples/

tsm_system_rows es una de las dos extensiones de muestreo estándar, documentadas aquí:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

¡Oye! Me alegra que hayas hecho esta pregunta. Tiendo a usar el método BERNOULLI, que está integrado en SELECT desde el primer momento, pero se basa en un porcentaje. Acabo de probar esto y funciona bien:

select * from task 
tablesample BERNOULLI (1)
limit 88