最近做手机银行营销名单时,需对评分(pf)和开户率(khl)进行二维统计
评分和开户率需进行分段统计。
其中,评分取值范围:[0,100],开户率取值范围:[0,1]
以下为测试数据:
--测试数据
--检查表是否存在,若存在则删除
DROP TABLE IF EXISTS yingxiao;
--创建测试表:yingxiao
CREATE TABLE yingxiao(name varchar(10) NOT NULL ,pf double(10,2) NOT NULL,khl double(10,2) NOT NULL,PRIMARY KEY (name));--插入测试数据
INSERT INTO yingxiao VALUES('a','15','0.15');
INSERT INTO yingxiao VALUES('b','25','0.25');
INSERT INTO yingxiao VALUES('c','35','0.35');
INSERT INTO yingxiao VALUES('d','40','0.4');
INSERT INTO yingxiao VALUES('e','45','0.45');
INSERT INTO yingxiao VALUES('f','55','0.55');
INSERT INTO yingxiao VALUES('g','65','0.65');
INSERT INTO yingxiao VALUES('h','54','0.66');
INSERT INTO yingxiao VALUES('i','75','0.75');
INSERT INTO yingxiao VALUES('j','85','0.85');
INSERT INTO yingxiao VALUES('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)*20 as min,ceil(pf/20)*20 as max,count(*)from yingxiao group by ceil(pf/20);

评分字段分段统计结果:
[0,20]:1
(20,40]:3
(40,60]:3
(60,80]:2
(80,100]:2
实际上,在统计分组中习惯规定:“上组限不在内”,即:a≤x<b。
2、方法二:case语句
结构:case  when… then …end
SELECT
sum(CASE when pf<20 then 1 else 0 end)   AS '[0,20)',
sum(CASE when  pf>20 and  pf<=40 then 1 else 0 end)  AS '[20,40)',
sum(CASE when  pf>40 and  pf<=60 then 1 else 0 end)  AS '[40,60)',
sum(CASE when  pf>60 and  pf<=80 then 1 else 0 end)  AS '[60,80)',
sum(CASE when  pf>80  then 1 else 0 end)   AS '[80,100]'
FROM yingxiao;

二、两个字段分段统计

对评分和开户率两个字段进行分组统计,形成二维交叉表,可将上面方法交叉使用。
select (ceil(khl*100/20)-1)*0.2 as khl_min,ceil(khl*100/20)*0.2 as khl_max,sum(CASE when pf>=0 and pf<=20 then 1 else 0 end)   AS 'pf[0,20]',sum(CASE when  pf>=20 and pf<40 then 1 else 0 end)  AS 'pf[20,40)',sum(CASE when  pf>=40 and pf<60 then 1 else 0 end)  AS 'pf[40,60)',sum(CASE when  pf>=60 and pf<80 then 1 else 0 end)  AS 'pf[60,80)',sum(CASE when  pf>=80 and pf<=100 then 1 else 0 end)   AS 'pf[80,100]',count(*)   AS 'pf合计'
FROM yingxiao group by ceil(khl*100/20);

原文地址:
数据小雄博客:http://www.zhangzhengxiong.com/?id=97

Mysql对字段进行分段统计相关推荐

  1. mysql 两字段相乘_sql统计2列相乘和语句.doc

    sql统计2列相乘和语句 sql统计2列相乘和语句 篇一:sql统计2列相乘和语句 最近有网友提出"两数相除求余数 SQL语句怎么实现两列内容"等问题,小小知识站提取了各大知名网站 ...

  2. mysql 分段解析_MYSQL分段统计

    产品表 CREATE TABLE `product` ( `product_id` int(11) NOT NULL AUTO_INCREMENT, `product_model` varchar(2 ...

  3. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

    [0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...

  4. mysql组合字段语句_mysql group_concat 使用 (按分组组合字段)

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DES ...

  5. excel数值分类汇总+分段统计:数据透视表

    一.已有数据:如下图所示的一列数字. 二.问题: 1)统计每一个数字的个数: 2)统计分段范围内数字的个数. 三.解决方式 问题1 (1)首先需要给要统计的该列数值加上字段名(即列名,此处命名为值), ...

  6. JDBC操作MySQL Lob字段记实

    JDBC操作MySQL Lob字段记实 虽然Java的持久化框架多如牛毛,但都离不开JDBC技术,JDBC在某些时候是其他框架难以取代的.也是java操作数据库最根本的技术. 上文写了JDBC操作DB ...

  7. MySql 查询表字段数

    MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...

  8. MySQL添加字段和修改字段的方法

    MySQL添加字段的方法并不复杂,下面将为您详细介绍MySQL添加字段和修改字段等操作的实现方法,希望对您学习MySQL添加字段方面会有所帮助. 1.登录数据库 >mysql -u root - ...

  9. mysql修改字段为现在时间_mysql如何修改字段自动生成时间

    mysql修改字段自动生成时间的方法:1.添加CreateTime设置默认时间:2.修改CreateTime设置默认时间:3.添加UpdateTime设置默认时间. 本教程操作环境:windows7系 ...

  10. es统计有多少个分组_es多字段分组去重统计

    < es多字段分组去重统计 oracle中sql: select a1 ,b1 from dual group by a1 ,b1 或 select DISTINCT a1 ,b1 from d ...

最新文章

  1. ubuntu~vim操作
  2. 神策数据创始人桑文锋:AARRR模型如何应用到产品各个阶段
  3. matlab 角域重采样,matlab滤波技术与区域处理---区域滤波
  4. 倒计时 2 天 | 神策 2019 数据驱动大会即将开幕
  5. java函数ao活动对象_[AO] AO全面介绍
  6. windows 的mysql5.7安装
  7. 从一个简单的Java单例示例谈谈并发
  8. WEBGL的测试网站和基础知识
  9. 4.docker 添加国内镜像
  10. PhpStorm取消创建一个文件自动就add提交到git
  11. python如何退出while循环_python如何跳出while循环
  12. 将一个给定的 n×n 方阵转置(行列互换)
  13. win10此计算机无法创建家庭组,教你Win10专业版无法创建家庭组怎么办?
  14. 你都为美白缴过哪些智商税? | Alfred数据室
  15. J9数字平台科普:Web3支柱:去中心化存储全面解析
  16. 《崩坏:星穹铁道》游戏遇到打不开/闪退/黑屏怎么办?
  17. vbs整人代码大集合(多年以来的整合)
  18. GPU编程自学2 —— CUDA环境配置
  19. 影院活动管理系统 项目测试与部署
  20. Beckhoff TwinCAT3.1 通过EtherCAT驱动电机(上)

热门文章

  1. BZOJ P1059 [ZJOI2007]矩阵游戏——solution
  2. 使用SqlBulkCopy 批量操作大量数据
  3. sqoop连接Oracle数据库错误异常
  4. Python:SQLMap的工作流程
  5. Storm-源码分析-Streaming Grouping (backtype.storm.daemon.executor)
  6. SilverLight企业应用框架设计【一】整体说明
  7. 最近病毒缠身,帖两个病毒的解决方法.
  8. mac上如何将文件批量重命名的方法
  9. 夏天到啦!你的mac过热怎么办?教你几招过热技巧~
  10. docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP