求关于一条数据统计分析的SQL语句

limty_mz 2016-03-02 12:03:59
目的:将数据量等百分比输出,比如我想根据age的不同取值分布情况,总数累加达到一定百分比时输出(比如每20%输出对应的值)
具体实例如下:
数据表:
id age
1 10
2 10
3 20
4 20
5 20
6 30
7 30
8 30
9 30
10 30
我想要的结果是:
age rate
10 20%
20 40%
30 60%
30 80%
30 100%
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2016-03-03
  • 打赏
  • 举报
回复
取分布情况,一般就是用NTILE

DECLARE @pct FLOAT=0.2
;WITH a(id,age) AS (	  
	select 1 ,10 UNION
	select 2,10 UNION
	select 3 ,20 UNION
	select 4 ,20 UNION
	select 5 ,20 UNION
	select 6,30 UNION
	select 7 ,30 UNION
	select 8,30 UNION
	select 9,30 UNION
	select 10,30
),b AS (
SELECT *,NTILE(cast(1/@pct AS INT)) OVER(ORDER BY id)  g  FROM a 
)
SELECT  MAX(age) AS age,g*@pct*100 AS parcent  FROM b GROUP BY g
最终结果,下面,你再把parcent转为字符加上百分号 age parcent 10 20 20 40 30 60 30 80 30 100
gjifglms 2016-03-02
  • 打赏
  • 举报
回复
select max(age),sum(1)/(select sum(1) from 表 ) from 表 group by age
卖水果的net 版主 2016-03-02
  • 打赏
  • 举报
回复
感觉没什么规律;

34,576

社区成员

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

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