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:Saya telah memposting pertanyaan lain yang mirip dengan ini di mana saya menemukan bahwa hasil saya sebenarnya tidak acak, tetapi itu hanya hasil TOP N. Saya telah memesan oleh newid()
dalam kueri terluar dan semua yang dilakukan adalah mengocok set hasil yang sama persis. Dari pertanyaan yang sekarang ditutup, saya menemukan bahwa saya perlu menggunakan TOP
kata kunci bersama dengan order by newid()
di baris komentar dalam kueri di atas.