Mysql对字段进行分段统计

摘要: 最近做手机银行营销名单时,需对评分(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] 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

原文链接

你可能感兴趣的:(Mysql对字段进行分段统计)