首页 文章

关于从表中随机选择一些行,然后取平均值

提问于
浏览
0

这是我的问题 .

我试图这样做:在SQL Server上的数据库中的表中有x列 . 我想随机选择n%的行k次 . 每次我随机选择行后,我都会取一列的平均值 . 最后,我需要取k时间平均值的平均值 .

例如,

Original Table

Gender  Height
M   182
M   183
M   178
M   165
M   183
M   158
M   192
M   171
M   173
M   165
M   174
M   166
M   188
M   176
M   174
M   162

Random selection 1

Gender  Height
M   182
M   183
M   178
M   165
  • 然后计算所选四个的平均高度
Gender  Avg_Height
M   177

Random selection 2

Gender  Height
M   158
M   176
M   174
M   171
  • 然后计算所选四个的平均高度
Gender  Avg_Height
M   170

最后,计算170和177的平均值,这是最终表 .

Gender  Avg_Height
M   173.5

我从原始表中随机选择4行,每次取平均值,然后取两个平均高度的平均值 . 我知道如何多次选择随机行,但无法弄清楚如何将最终结果放在数据库的表中 . 谢谢 .

通过newid()从original_table顺序中选择前4 *

1 回答

  • 0

    创建一个输出表,然后循环并使用 INSERT INTO 来填充它:

    CREATE TABLE output (Selection INT, Avg_Height FLOAT)
    GO
    DECLARE @intFlag INT
    SET @intFlag = 1
    WHILE (@intFlag <=5)
    BEGIN
    
        WITH cte AS (SELECT TOP 4 *
                     FROM Table1
                     ORDER BY NEWID())
        INSERT INTO output
        SELECT @intFlag, AVG(Height*1.0)
        FROM cte
    
    SET @intFlag = @intFlag + 1
    END
    GO
    

    演示:SQL Fiddle

    添加 ORDER BY NEWID() 是一种随机化结果顺序的方法,上面的循环将运行5次,调整 WHILE 部分以更改迭代次数 .

相关问题