Wählen Sie eine zufällige Zeile für jede Gruppe in einer Postgres-Tabelle aus

8

Ich habe eine Tabelle, die ungefähr lautet:

%Vor%

Mein Ziel ist es, für jede Kategorie in der Tabelle eine zufällige Zeile für alle Kategorien in der Tabelle abzurufen. Der Plan ist dann, jeder Zeile eine Variable für ihre jeweilige Kategorie zuzuweisen.

Im Moment benutze ich mehrere SELECT-Anweisungen, die wie folgt aussehen:

SELECT link, caption, image FROM table WHERE category='whatever' ORDER BY RANDOM() LIMIT 1

Aber das scheint unelegant und schafft mehr Fahrten in die DB, die teuer ist.

Ich bin mir ziemlich sicher, dass es eine Möglichkeit gibt, dies mit den Fensterfunktionen in Postgres zu tun, aber ich habe keine Erfahrung mit ihnen und ich bin mir nicht ganz sicher, wie ich eine verwenden kann, um zu bekommen, was ich will.

Danke für jede Hilfe!

    
Steve 30.08.2013, 18:22
quelle

1 Antwort

12

Versuchen Sie etwas wie:

%Vor%

Oder mit Fensterfunktionen:

%Vor%     
Igor Romanchenko 30.08.2013, 18:28
quelle