统计SQL,有计算

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


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


问这个SQL写法
...全文
250 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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(.....)
t101lian 2014-04-14
  • 打赏
  • 举报
回复

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

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧