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
CHỈNH SỬA:Tôi đã đăng một câu hỏi khác tương tự như câu hỏi này, trong đó tôi thấy rằng kết quả của tôi trên thực tế không phải là ngẫu nhiên, mà chúng chỉ là kết quả TOP N. Tôi đã đặt hàng theo newid()
trong truy vấn ngoài cùng và tất cả những gì đang làm là xáo trộn xung quanh cùng một tập kết quả chính xác. Từ một câu hỏi hiện đã được đóng lại, tôi phát hiện ra rằng tôi cần sử dụng TOP
từ khóa cùng với order by newid()
trong dòng nhận xét trong truy vấn trên.