select
T1.sex,
T1.decades,
T1.counts,
T2.patid
from (
select
sex,
age/10 as decades,
COUNT(*) as counts
from (
select m.patid,
m.sex,
DATEPART(year,min(c.admitdate)) -m.yrdob as Age
from members as m
inner join claims as c on c.patid=m.PATID
group by m.PATID, m.sex,m.yrdob
)x
group by sex, Age/10
) as T1
join (
--right here is where the random sampling occurs
SELECT TOP 50--this is the total number of peolpe in our dataset
patid
,sex
,decades
from (
select m.patid,
m.sex,
(DATEPART(year,min(c.admitdate)) -m.yrdob)/10 as decades
from members as m
inner join claims as c on c.patid=m.PATID
group by m.PATID, m.sex, m.yrdob
) T2
order by NEWID()
) as T2
on T2.sex = T1.sex
and T2.decades = T1.decades
EDIT:Jag hade postat en annan fråga som liknar denna där jag fann att mina resultat inte var slumpmässiga, utan de var bara de BÄSTA N-resultaten. Jag hade beställt av newid()
i den yttersta frågan och allt som gjordes var att blanda runt exakt samma resultatuppsättning. Från en fråga som nu är stängd fick jag reda på att jag behövde använda TOP
nyckelord tillsammans med order by newid()
i den kommenterade raden i ovanstående fråga.