2016-04-19 9 views
1

ich mit einem Satz von Werten eine Tabelle, Tabellenbeispiel istSampling auf Zählung bestimmten Spaltenwertes in postgreSQL

ID | Customer_name | workorder 
1 | abc   | dispatch 
2 | xyz   | not_dispatch 
3 | jdk   | dispatch  

und das gilt für insgesamt 1 M Reihen auf .. Jetzt mag ich dies probieren Datensatz auf 5000 Zeilen und ich möchte 3400 Arbeitsaufträge als 'not_dispatch' und 1600 mit 'Versand' in der Probe. Wie kann dies in PostgreSQL getan werden.

+0

So wollen Sie einen 5000 Aufzeichnungsabtastwert mit 3400 nicht bei Versandkäufen und 1600? –

+0

ja, aus den 1M Reihen möchte ich nur 5000 Datensätze .. mit 3400 mit not_dispatch und 1600 mit Versand –

+0

Willst du in irgendeiner bestimmten Weise probieren? Eine Zufallsstichprobe aus so vielen Datensätzen (1 Million) ist möglicherweise nicht so effizient. –

Antwort

1

Weit davon entfernt, effizient, aber effektiv:

SELECT * 
FROM (
    SELECT * FROM my_table 
    WHERE workorder = 'dispatch' -- other filters 
    ORDER BY random() LIMIT 1600) sub1 
UNION 
SELECT * 
FROM (
    SELECT * FROM my_table 
    WHERE workorder = 'not_dispatch' -- other filters 
    ORDER BY random() LIMIT 3400) sub2;