Выбор случайного числа строк из таблицы
Случайная выборка строк может быть выбрана с помощью функции SQL случайного числа.Например, в PostgreSQL это random()
.
. Количество выбранных строк зависит от количества строк, которые будут выбраны без случайной выборки, и от вероятности выборки,
ДляНапример, если таблица содержит 5000 строк, а вероятность выборки меньше 0,1, будет выбрано около 500 строк (10% от 5000).
Если в предложении WHERE без случайной выборки, скажем, скажем1500 строк, а вероятность выборки меньше 0,2, тогда будет выбрано около 300 строк (20% из 1500).
Обратите внимание, что с помощью этого метода вы не можете гарантировать точное количество выбранных строк (этоприрода вероятности ...), поэтому для того, чтобы получить число строк, близкое к желаемому, вам необходимо соответствующим образом выбрать вероятность.
Также обратите внимание, что если вы хотите повторить этот процесс и получитькаждый раз одни и те же результаты, вам нужно запустить генератор случайных чисел с одинаковым значением.Вы можете сделать это с помощью функции setseed()
:
SELECT setseed(.123);
Последнее, функция random()
существует в PostgeSQL.Другие механизмы базы данных могут использовать другое имя для этой функции (например, в MySQL и SQL Server, я считаю, что это rand()
).
См. Следующие операторы выбора для некоторых примеров.
-- all rows
select count(*) from my_table;
-- 5264
-- should get about half of all rows
select count(*) from my_table where random() < 0.5;
-- 2734
-- should get about 10% of all rows
select count(*) from my_table where random() < 0.1;
-- 513
-- all rows matching some criteria
select count(*) from my_table where id > 100000 and id < 400000;
-- 3023
-- about half of the rows matching the above criteria
select count(*) from my_table where id > 100000 and id < 400000 and random() < 0.5;
-- 1527
-- about 10% of the rows matching the above criteria
select count(*) from my_table where id > 100000 and id < 400000 and random() < 0.1;
-- 283