对数据进行采样? select avg(col) from test sample(.....)

解决方案 »

  1.   

    应该是tablesample(80 percent)TABLESAMPLE
      

  2.   

    select avg(saleamount) from 
    (select top 80 percent * from caiji) a
      

  3.   

    select top 80 percent * from 用戶表 order by newid()
      

  4.   

    80%、90%、95%的用户基于什么标准啊。
    SELECT userbm,AVG(saleamount) AS OrderAVG
    FROM caiji
    GROUP BY userbm
      

  5.   

    向你这种统计我感觉你应该是要采用随机采样的方法,然后多采样几次再求个平均值SELECT AVG(linetotal) FROM Sales.SalesOrderDetail AS sod TABLESAMPLE(80 PERCENT)
    SELECT AVG(linetotal) FROM Sales.SalesOrderDetail AS sod TABLESAMPLE(90 PERCENT)
    SELECT AVG(linetotal) FROM Sales.SalesOrderDetail AS sod TABLESAMPLE(95 PERCENT)
      

  6.   

    大家回复的这么欢快,给出的SQL语句这么多,你们知道楼主要的是什么吗?
    还有,你们知道“各统计80%、90%、95%的用户” 这里面的百分比是怎么来的吗?
    这样会误导人的啊,哥哥们
      

  7.   

    是这样的,caiji是一个各用户平时购买情况的表,现在需要统计80%的用户,他们购买值处于一个什么水平(平均值),90%的用户购买值又是什么样的,这样可能评估用户的大致购买能力
      

  8.   

    那你就这样吧:select top 80 percent AVG([购买量]) as [平均购买量] from caiji order by newid() ---80%
    select top 90 percent AVG([购买量]) as [平均购买量] from caiji order by newid() ---90%
    select top 95 percent AVG([购买量]) as [平均购买量] from caiji order by newid() ---95%
      

  9.   

    刚才的分别对应的百分比的总共[平均购买量],如果换算成个人的话,再除以那个百分比:select top 80 percent AVG([购买量])/80.0 as [平均购买量] from caiji order by newid() ---80%
    select top 90 percent AVG([购买量])/90.0 as [平均购买量] from caiji order by newid() ---90%
    select top 95 percent AVG([购买量])/95.0 as [平均购买量] from caiji order by newid() ---95%
      

  10.   

     
    select userbm,  avg(saleamount) from 
    (select top 80 percent* from caiji where  order by newid())a
      group by userbm --各统计80%的用户,购买量平均值。
      

  11.   

    很报歉,我的数据库不支持(MYSQL),用其他办法实现了