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

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

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql greatest-n-per-group


    【解决方案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。我的问题是如何为每个州提取随机记录。
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多