日期:2014-05-16  浏览次数:20487 次

统计SQL,有计算
表名 caiji
userbm,saleamount(用户编码,购买量)


要求,各统计80%、90%、95%的用户,购买量平均值。


问这个SQL写法
------解决方案--------------------
各统计80%、90%、95%的用户----你这里头的百分比哪里来的?
------解决方案--------------------
select avg(saleamount) from 
(select top 80 percent * from caiji) a

------解决方案--------------------
select top 80 percent * from 用戶表 order by newid()
------解决方案--------------------
80%、90%、95%的用户基于什么标准啊。


SELECT userbm,AVG(saleamount) AS OrderAVG
FROM caiji
GROUP BY userbm

------解决方案--------------------
向你这种统计我感觉你应该是要采用随机采样的方法,然后多采样几次再求个平均值
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)

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


应该是对照一个产品,然后来统计这个产品的用户和购买数量,至于用户百分比是占总消费人数的百分比或者是一个大类产品,下面有很多小类产品,根据小类产品的用户来统计购买数量和小类产品在大类产品的用户百分比。楼主少提供一张表的数据
------解决方案--------------------
引用:
是这样的,caiji是一个各用户平时购买情况的表,现在需要统计80%的用户,他们购买值处于一个什么水平(平均值),90%的用户购买值又是什么样的,这样可能评估用户的大致购买能力

那你就这样吧:

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%

------解决方案--------------------
 

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