Пример ввода:
SELECT * FROM test; id | percent ----+---------- 1 | 50 2 | 35 3 | 15 (3 rows)
Как бы вы пишете такой запрос, что в среднем 50% времени я мог бы получить строку с id = 1, 35% временной строки с id = 2 и 15% временной строки с id = 3?
Я пробовал что-то вроде SELECT id FROM test ORDER BY p * random() DESC LIMIT 1
, но он дал неправильные результаты. После 10 000 запусков я получаю распределение вроде: {1=6293, 2=3302, 3=405}
, но я ожидал, что распределение будет почти: {1=5000, 2=3500, 3=1500}
.
Любые идеи?