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
РЕДАКТИРАНЕ:Бях публикувал друг въпрос, подобен на този, в който открих, че резултатите ми всъщност не са произволни, а са само ТОП N резултата. Бях поръчал чрез newid()
в най-външната заявка и всичко, което правеше, беше разбъркване около абсолютно същия набор от резултати. От въпрос, който вече е затворен, разбрах, че трябва да използвам TOP
ключова дума заедно с order by newid()
в коментирания ред в горната заявка.