PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ich brauche eine Funktion, um 88 zufällige Zeilen aus einer Tabelle auszuwählen (ohne Duplikate)

Hier ist eine schnelle Lösung, die Ihnen gefallen könnte:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Als Referenz befindet sich TABLESAMPLE in der Dokumentation für SELECT:https://www. postgresql.org/docs/current/sql-select.html

Hier ist eine recht gute Beschreibung des Features:

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

...und ein weiterer Artikel zum allgemeinen Thema Zufallsstichprobe vom gleichen Autor:

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

tsm_system_rows ist eine von zwei Standard-Sampling-Erweiterungen, die hier dokumentiert sind:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Hey! Ich bin froh, dass Sie diese Frage gestellt haben. Ich neige dazu, die BERNOULLI-Methode zu verwenden, die standardmäßig in SELECT integriert ist, aber auf einem Prozentsatz basiert. Ich habe es gerade ausprobiert und es funktioniert gut:

select * from task 
tablesample BERNOULLI (1)
limit 88