PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Potrzebuję funkcji do wybrania 88 losowych wierszy z tabeli (bez duplikatów)

Oto szybkie rozwiązanie, które może Ci się spodobać:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Dla odniesienia, TABLESAMPLE znajduje się w dokumentacji SELECT:https://www. postgresql.org/docs/current/sql-select.html

Oto całkiem dobry opis funkcji:

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

...i jeszcze jeden artykuł na ogólny temat losowego doboru próby tego samego autora:

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

tsm_system_rows to jedno z dwóch standardowych rozszerzeń próbkowania, udokumentowanych tutaj:https:// /www.postgresql.org/docs/current/tsm-system-rows.html

Hej! Cieszę się, że zadałeś to pytanie. Zwykle używam metody BERNOULLI, która jest wbudowana w SELECT, ale jest oparta na procentach. Właśnie to wypróbowałem i działa dobrze:

select * from task 
tablesample BERNOULLI (1)
limit 88



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy with_for_update blokowanie wierszy nie działa?

  2. Jak zainstalować wiele serwerów PostgreSQL w systemie RedHat Linux?

  3. R RPostgreSQL Połącz się ze zdalną bazą danych Postgres za pomocą SSL

  4. Uruchom plik wsadowy za pomocą polecenia psql bez hasła

  5. Błąd Postgresa podczas aktualizowania danych w kolumnie