抽取MSSQL随机按比例抽取:一次性取得随机结果(mssql随机按比例)

      在某些应用场景中,我们有时会遇到 直接从某表中取出满足一定 ,按一定比例抽取随机结果的需求,如在MSSQL数据库中,我们可以使用查询语句把随机结果抽取出来,我们可以将精准的抽取体现在SQL语句中。

      下面是将随机结果按一定比例抽取的MSSQL语句:

SELECT TOP n PERCENT  *
FROM Table
ORDER BY NEWID()

      这里的n表示抽取的比例,如果想要抽取一半左右的数据,就直接设置n为50;如果想要抽取90%左右的数据,那么设置n为90.

      上面的语句之所以可以实现MSSQL随机按比例抽取,是因为使用了系统函数 NEWID,该函数将返回对应的GUID,NEWID函数是SQl Server 2000中提供的一个作为随机数生成器,用于产生一个尽可能近似真正随机的唯一标识符,系统每次调用 NEWID函数时就可以获取一个唯一的值,将NEWID函数应用到ORDER BY子句,这时就可以实现从表中随机抽取结果了。

      当然,如果比例抽取对数据准确度不是和这种要求很高的情况下,我们也可以直接使用 T-sql中的 RAND函数,RAND函数的作用就是为SQL表中的每一行产生一个随机数,范围在0~1之间,可以用作抽取记录的一个快速选择器,RAND函数先计算每一行的随机数,然后再按照随机数大小对表进行排序,排序完成后,前n%的记录就是随机抽取的结果。

      总之,我们不管使用哪种方式,使用NEWID函数或者RAND函数,只要根据实际情况能够正确把SQL查询语句写出来,都可以达到一次性从表中取出满足一定条件的记录,按一定比例进行随机抽取的目的。


数据运维技术 » 抽取MSSQL随机按比例抽取:一次性取得随机结果(mssql随机按比例)