SQL Server - 每个状态拉 X 个随机记录

Posted

技术标签:

【中文标题】SQL Server - 每个状态拉 X 个随机记录【英文标题】:SQL Server - pull X random records per state 【发布时间】:2010-10-22 15:51:01 【问题描述】:

我有一张记录美国每个邮政编码的表格。为了在地图上显示,我需要为每个州选择 X 个随机记录。我该怎么做呢?

【问题讨论】:

【参考方案1】:

用途:

WITH sample AS (
 SELECT t.*,
        ROW_NUMBER() OVER (PARTITION BY t.state
                               ORDER BY NEWID()) AS rank
   FROM ZIPCODES t)
SELECT s.*
  FROM sample s
 WHERE s.rank <= 5

【讨论】:

这很好用。下一个问题 - 如果有机会我需要将其移植到 mysql - 是否有更普遍兼容的方式来形成查询? @Chris:不是原样 - MySQL 不支持分析/排名功能。【参考方案2】:
SELECT * FROM ZipCodes ORDER BY NEWID()

【讨论】:

是的,我知道newid。我的问题是如何为每个州提取随机记录。

以上是关于SQL Server - 每个状态拉 X 个随机记录的主要内容,如果未能解决你的问题,请参考以下文章

随机变量的数字特征之数学期望

SQL Server - 与随机值的相关性?

SQL Server:根据多个条件从组中选择特定行

SQL Server 中的伪随机可重复排序(不是 NEWID() 和 RAND())

Sql Server随机抽取数据效率优化

关于概率期望