В качестве альтернативы, поскольку функция random () в sqlite возвращает 64-разрядное целое число со знаком, мы можем вычислить точку в этом пространстве как (2 ^ 63) * 0.6.Целые числа со знаком больше этого значения будут составлять 40% от набора 64-разрядных целых чисел с положительными знаками, поэтому 20% от всего набора.
Сокращение до целого числа ниже, это 5534023222112865484.
Следовательно, вы должны иметь возможность получить 20% своих строк с помощью простого:
SELECT * FROM table WHERE random() > 5534023222112865485
Или в вашем случае, поскольку вы хотите удалить столько:
DELETE FROM table WHERE random() > 5534023222112865485
Я надеюсь, что вынаслаждайтесь этим подходом.Это может быть действительно целесообразно, если вы хотите добиться высокой производительности от такой операции, но это может зависеть от оборудования / версии, поэтому, вероятно, не стоит рисковать.