您的位置:首页 > 数据库 > MySQL

mysql中利用ceil函数对成绩进行分段统计

2016-05-03 15:44 645 查看

栗子需求

目前我有一张成绩表,以如下简单的形式存储着某一科成绩,如今我想统计一下成绩在0~20、20~40、40~60、60~80、80~100各个阶段下的学生的总个数,可通过该文最后的sql语句插入测试数据。

idscorename
14姓名1
26姓名2
312姓名3
2096姓名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');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: