• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

统计SQL,有计算

chuting1 2014-04-14 11:04:32
表名 caiji
userbm,saleamount(用户编码,购买量)


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


问这个SQL写法
...全文
185 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chuting1 2014-04-18
很报歉,我的数据库不支持(MYSQL),用其他办法实现了
回复
山寨DBA 2014-04-14
引用 11 楼 chuting 的回复:
是这样的,caiji是一个各用户平时购买情况的表,现在需要统计80%的用户,他们购买值处于一个什么水平(平均值),90%的用户购买值又是什么样的,这样可能评估用户的大致购买能力
刚才的分别对应的百分比的总共[平均购买量],如果换算成个人的话,再除以那个百分比:

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%
回复
山寨DBA 2014-04-14
引用 11 楼 chuting 的回复:
是这样的,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%
回复
chuting1 2014-04-14
是这样的,caiji是一个各用户平时购买情况的表,现在需要统计80%的用户,他们购买值处于一个什么水平(平均值),90%的用户购买值又是什么样的,这样可能评估用户的大致购买能力
回复
grn0515 2014-04-14
引用 9 楼 hwhmh2010 的回复:
大家回复的这么欢快,给出的SQL语句这么多,你们知道楼主要的是什么吗? 还有,你们知道“各统计80%、90%、95%的用户” 这里面的百分比是怎么来的吗? 这样会误导人的啊,哥哥们
应该是对照一个产品,然后来统计这个产品的用户和购买数量,至于用户百分比是占总消费人数的百分比或者是一个大类产品,下面有很多小类产品,根据小类产品的用户来统计购买数量和小类产品在大类产品的用户百分比。楼主少提供一张表的数据
回复
山寨DBA 2014-04-14
大家回复的这么欢快,给出的SQL语句这么多,你们知道楼主要的是什么吗? 还有,你们知道“各统计80%、90%、95%的用户” 这里面的百分比是怎么来的吗? 这样会误导人的啊,哥哥们
回复
yoan2014 2014-04-14
向你这种统计我感觉你应该是要采用随机采样的方法,然后多采样几次再求个平均值
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)
回复
renliquan 2014-04-14
80%、90%、95%的用户基于什么标准啊。

SELECT userbm,AVG(saleamount) AS OrderAVG
FROM caiji
GROUP BY userbm
回复
lzw_0736 2014-04-14
select top 80 percent * from 用戶表 order by newid()
回复
xxfvba 2014-04-14
select avg(saleamount) from (select top 80 percent * from caiji) a
回复
yoan2014 2014-04-14
应该是tablesample(80 percent)

TABLESAMPLE
回复
山寨DBA 2014-04-14
各统计80%、90%、95%的用户----你这里头的百分比哪里来的?
回复
chuting1 2014-04-14
类似于统计用户购买情况的查询
回复
yoan2014 2014-04-14
对数据进行采样? select avg(col) from test sample(.....)
回复
洞房不敗 2014-04-14

select userbm,  avg(saleamount) from 
(select top 80 percent* from caiji where  order by newid())a
  group by userbm --各统计80%的用户,购买量平均值。
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2014-04-14 11:04
社区公告
暂无公告