美文网首页
Mysql对字段进行分段统计

Mysql对字段进行分段统计

作者: 暖夏未眠丶 | 来源:发表于2018-01-24 17:01 被阅读60次

摘要: 最近做手机银行营销名单时,需对评分(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

版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

原文链接

相关文章

  • Mysql对字段进行分段统计

    摘要:最近做手机银行营销名单时,需对评分(pf)和开户率(khl)进行二维统计 评分和开户率需进行分段统计。本文采...

  • MySQL 分段查询

    在项目中有个统计模块的开发工作,需要按每天来统计一些信息,开发时我直接使用了MySQL来进行分段查询,将数据直接按...

  • 同字段不同值的统计查询(Mysql)

    1、同字段不同值分段统计查询: SELECT sum(case when `col_name`= 1 then 1...

  • Mysql where条件对int字段的处理

    今天操作mysql数据库,进行select的时候发现,mysql可以直接对int字段传string类型值。

  • mysql常用函数及语句笔记

    mysql中group by分组后查询无数据补0 MySQL对sum()字段进行条件筛选:having 显示按日期...

  • Kibana 调研

    1. Area metrics.Y-Axis.Aggregation:对字段进行常见的统计。 metrics.Y-...

  • MySql排序查询将null放在最后的解决办法

    ​ MySQL中使用order by对字段进行排序的时候,如果是降序排序,那字段值为null的记录会排在最后...

  • 对List进行分段

    实现思路: list按sublist的大小截成一定的份数,然后放到一个数组里面, 一下是一个demo例子:

  • mysql count统计多字段

    纯属做一下笔记 order :订单表 id account order_status amount 1 123...

  • mysql中的分组

    mysql中分组查询就是将表中一系列字段相同的进行分组。语法select 字段,function(字段) as (...

网友评论

      本文标题:Mysql对字段进行分段统计

      本文链接:https://www.haomeiwen.com/subject/wrwuaxtx.html