PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

J'ai besoin d'une fonction pour sélectionner 88 lignes aléatoires dans une table (sans doublons)

Voici une solution rapide qui pourrait vous plaire :

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Pour référence, TABLESAMPLE se trouve dans la documentation de SELECT :https://www. postgresql.org/docs/current/sql-select.html

Voici un assez bon résumé de la fonctionnalité :

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

...et un autre article sur le sujet général de l'échantillonnage aléatoire du même auteur :

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

tsm_system_rows est l'une des deux extensions d'échantillonnage standard, documentées ici :https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Hé! Je suis content que vous ayez posé cette question. J'ai tendance à utiliser la méthode BERNOULLI, qui est intégrée à SELECT prête à l'emploi, mais elle est basée sur un pourcentage. Je viens d'essayer ceci et cela fonctionne bien :

select * from task 
tablesample BERNOULLI (1)
limit 88