PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ho bisogno di una funzione per selezionare 88 righe casuali da una tabella (senza duplicati)

Ecco una soluzione rapida che potrebbe piacerti:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Per riferimento, TABLESAMPLE è nei documenti per SELECT:https://www. postgresql.org/docs/current/sql-select.html

Ecco un buon resoconto della funzione:

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

...e un altro pezzo sul tema generale del campionamento casuale dello stesso autore:

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

tsm_system_rows è una delle due estensioni di campionamento standard, documentate qui:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Ehi! Sono felice che tu abbia fatto questa domanda. Tendo a usare il metodo BERNOULLI, che è integrato in SELECT out of the box, ma si basa su una percentuale. L'ho appena provato e funziona bene:

select * from task 
tablesample BERNOULLI (1)
limit 88