При желании можно почти все. Другое время, что делать подобную выборку только на SQL неоптимально. Но в любом случае можно примерно так (вариант для Oracle)
- Код: Выделить всё
select *
from PEOPLES
where decode(POL,1,1,0)*decode(sign(rand()-0.8),1,1,0)=1
and decode(POL,2,1,0)*decode(sign(rand()-0.2),1,1,0)=1
В список должно входить 20% мужчин (POL=1) и 80% женщин (POL=2). Для возраста условие задается по аналогии.
Пояснения к функиям:
decode(value, mach1,return1, ..., returnelse) -- сравнение по парам
sign(value) -- знак числа, 1 для положительных, -1 для отрицательных, 0 для 0.
rand() -- случайное число в диапазоне 0...1
Lasciate ogni speranza, voi ch'entrate.