mysql中利用ceil函数对成绩进行分段统计
2016-05-03 15:44
645 查看
栗子需求
目前我有一张成绩表,以如下简单的形式存储着某一科成绩,如今我想统计一下成绩在0~20、20~40、40~60、60~80、80~100各个阶段下的学生的总个数,可通过该文最后的sql语句插入测试数据。id | score | name |
---|---|---|
1 | 4 | 姓名1 |
2 | 6 | 姓名2 |
3 | 12 | 姓名3 |
… | … | … |
20 | 96 | 姓名20 |
栗子解决方案
此时我们需要用到ceil函数来实现该需求,在写sql语句前必须要将百度百科中的ceil函数扒过来在这里展示一下:函数名 : ceil
用 法: double ceil(double x);
功 能: 返回大于或者等于指定表达式的最小整数
说明:float ceil ( float value )返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。—- [百度百科]
此时我们在mysql中构造如下sql语句,其中mathscore是该成绩表的名称
select count(*),(ceil(score/20)-1)*20 as min,ceil(score/20)*20 as max from mathscore group by ceil(score/20)
效果如下所示:
测试数据
DROP TABLE IF EXISTS `mathscore`; CREATE TABLE `mathscore` ( `id` int(11) NOT NULL AUTO_INCREMENT, `score` double(10,0) NOT NULL, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of mathscore -- ---------------------------- INSERT INTO `mathscore` VALUES ('1', '4', '姓名1'); INSERT INTO `mathscore` VALUES ('2', '6', '姓名2'); INSERT INTO `mathscore` VALUES ('3', '12', '姓名3'); INSERT INTO `mathscore` VALUES ('4', '20', '姓名4'); INSERT INTO `mathscore` VALUES ('5', '22', '姓名5'); INSERT INTO `mathscore` VALUES ('6', '28', '姓名6'); INSERT INTO `mathscore` VALUES ('7', '34', '姓名7'); INSERT INTO `mathscore` VALUES ('8', '38', '姓名8'); INSERT INTO `mathscore` VALUES ('9', '42', '姓名9'); INSERT INTO `mathscore` VALUES ('10', '50', '姓名10'); INSERT INTO `mathscore` VALUES ('11', '56', '姓名11'); INSERT INTO `mathscore` VALUES ('12', '58', '姓名12'); INSERT INTO `mathscore` VALUES ('13', '65', '姓名13'); INSERT INTO `mathscore` VALUES ('14', '65', '姓名14'); INSERT INTO `mathscore` VALUES ('15', '66', '姓名15'); INSERT INTO `mathscore` VALUES ('16', '74', '姓名16'); INSERT INTO `mathscore` VALUES ('17', '79', '姓名17'); INSERT INTO `mathscore` VALUES ('18', '83', '姓名18'); INSERT INTO `mathscore` VALUES ('19', '89', '姓名19'); INSERT INTO `mathscore` VALUES ('20', '96', '姓名20');
相关文章推荐
- 关于MySQL的几点安全配置
- Recover Corrupt MySQL Database
- 关于MySQL的几点安全配置
- windows 上Mysql远程连接配置
- Mysql常用命令详解
- 逐步讲解MySQL中定时事件计划的创建
- MySQL mysqldump数据导出详解
- mysql查询某月每一天的数据总和
- MySQL Data source rejected establishment of connection, message from server: "Too many connections"
- Rails 4 - Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded
- mysql 慢查询
- [MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用
- 定时备份mysql
- Mysql 特殊字符转义问题
- hibernate 表名大小写,mysql表名忽略大小写
- mysql安装与配置
- mysql常用函数小结
- mysql下merge分表
- Mysql增删改查语句
- mysql字符集问题