摘要: 最近做手机银行营销名单时,需对评分(pf)和开户率(khl)进行二维统计 评分和开户率需进行分段统计。本文采用ceil函数和case语句两种方法。
最近做手机银行营销名单时,需对评分(pf)和开户率(khl)进行二维统计
评分和开户率需进行分段统计。
其中,评分取值范围:[0,100],开户率取值范围:[0,1]
以下为测试数据:
--测试数据--检查表是否存在,若存在则删除DROPTABLEIFEXISTSyingxiao;--创建测试表:yingxiaoCREATETABLEyingxiao(namevarchar(10)NOTNULL,pfdouble(10,2)NOTNULL,khldouble(10,2)NOTNULL,PRIMARYKEY(name));--插入测试数据 INSERTINTOyingxiaoVALUES('a','15','0.15');INSERTINTOyingxiaoVALUES('b','25','0.25');INSERTINTOyingxiaoVALUES('c','35','0.35');INSERTINTOyingxiaoVALUES('d','40','0.4');INSERTINTOyingxiaoVALUES('e','45','0.45');INSERTINTOyingxiaoVALUES('f','55','0.55');INSERTINTOyingxiaoVALUES('g','65','0.65');INSERTINTOyingxiaoVALUES('h','54','0.66');INSERTINTOyingxiaoVALUES('i','75','0.75');INSERTINTOyingxiaoVALUES('j','85','0.85');INSERTINTOyingxiaoVALUES('k','95','0.95');
一、1个字段分段统计
1、方法一:ceil函数
函数名: ceil
用 法:double ceil(double x);
功 能:返回大于或者等于指定表达式的最小整数
说 明:float ceil ( float value )返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
百度关于ceil函数的介绍:https://baike.baidu.com/item/ceil/10931457
select(ceil(pf/20)-1)*20asmin,ceil(pf/20)*20asmax,count(*)fromyingxiaogroupbyceil(pf/20);
评分字段分段统计结果:
[0,20]:1
(20,40]:3
(40,60]:3
(60,80]:2
(80,100]:2
实际上,在统计分组中习惯规定:“上组限不在内”,即:a≤x
2、方法二:case语句
结构:case when… then …end
SELECTsum(CASEwhenpf<20then1else0end)AS'[0,20)',sum(CASEwhenpf>20andpf<=40then1else0end)AS'[20,40)',sum(CASEwhenpf>40andpf<=60then1else0end)AS'[40,60)',sum(CASEwhenpf>60andpf<=80then1else0end)AS'[60,80)',sum(CASEwhenpf>80then1else0end)AS'[80,100]'FROMyingxiao;
二、两个字段分段统计
对评分和开户率两个字段进行分组统计,形成二维交叉表,可将上面方法交叉使用。
select(ceil(khl*100/20)-1)*0.2askhl_min,ceil(khl*100/20)*0.2askhl_max,sum(CASEwhenpf>=0andpf<=20then1else0end)AS'pf[0,20]',sum(CASEwhenpf>=20andpf<40then1else0end)AS'pf[20,40)',sum(CASEwhenpf>=40andpf<60then1else0end)AS'pf[40,60)',sum(CASEwhenpf>=60andpf<80then1else0end)AS'pf[60,80)',sum(CASEwhenpf>=80andpf<=100then1else0end)AS'pf[80,100]',count(*)AS'pf合计'FROMyingxiaogroupbyceil(khl*100/20);
原文地址:
数据小雄博客:http://www.zhangzhengxiong.com/?id=97
版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:[email protected] 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
原文链接