Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Случайна извадка от голям набор от данни

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() в коментирания ред в горната заявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Масово вмъкване на полета с фиксирана ширина

  2. tsql връща таблица от функция или процедура за съхранение

  3. SQL:Изберете колони само със стойности NULL

  4. Как мога да използвам единичен пул за връзки mssql през няколко маршрута в уеб приложение Express 4?

  5. SQL Server Xml заявка с множество пространства от имена