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
BEARBEITEN:Ich hatte eine andere ähnliche Frage gepostet, bei der ich feststellte, dass meine Ergebnisse nicht zufällig waren, sondern nur die TOP-N-Ergebnisse. Ich hatte per newid()
bestellt in der äußersten Abfrage und alles, was getan wurde, war, um genau dieselbe Ergebnismenge zu mischen. Aus einer jetzt geschlossenen Frage habe ich herausgefunden, dass ich den TOP
verwenden musste Schlüsselwort zusammen mit order by newid()
in der auskommentierten Zeile in der obigen Abfrage.