Мне кажется, что ваше требование может быть выполнено, но его утверждение
select
ROUND(rand()*4, 0, ROUND_CEILING) * 2 as ORDER_FREQUENCY
from dummy;
RAND() * 4
расширяет диапазон значений возможных результатов для функции RAND()
с 0..1 до 0 ..4.
ROUND( ... , 0, ROUND_CEILING)
округляет число до следующего большего или равного целого числа и не оставляет десятичных разрядов.Для данного примера это означает, что результат этого округления может быть только 1, 2, 3 или 4.
*2
просто отображает четыре возможных значения в целевой диапазон чисел 2, 4, 6, 8.Если умножения не хватит, вы также можете использовать для этого функцию MAP()
.
И все.Случайные числа, выбранные из набора (2, 4, 6, 8)
.