查询0-60分,60-80分,80-90分,90-100分的人数及所占百分比

需求:查询0-60分,60-80分,80-90分,90-100分的人数及所占百分比
0-60:及格
60-80:良好
80-90:优秀
90-100:特优

sql语句是:

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50727
Source Host           : localhost:3306
Source Database       : fw_mybatis

Target Server Type    : MYSQL
Target Server Version : 50727
File Encoding         : 65001

Date: 2021-12-22 09:59:37
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `score` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1', '29');
INSERT INTO `score` VALUES ('2', '83');
INSERT INTO `score` VALUES ('3', '72');
INSERT INTO `score` VALUES ('4', '73');
INSERT INTO `score` VALUES ('5', '92');
INSERT INTO `score` VALUES ('6', '62');
INSERT INTO `score` VALUES ('7', '37');
INSERT INTO `score` VALUES ('8', '8');
INSERT INTO `score` VALUES ('9', '17');
INSERT INTO `score` VALUES ('10', '47');
INSERT INTO `score` VALUES ('11', '23');
INSERT INTO `score` VALUES ('12', '74');
INSERT INTO `score` VALUES ('13', '85');
INSERT INTO `score` VALUES ('14', '86');
INSERT INTO `score` VALUES ('15', '91');
INSERT INTO `score` VALUES ('16', '90');
INSERT INTO `score` VALUES ('17', '99');
INSERT INTO `score` VALUES ('18', '100');
INSERT INTO `score` VALUES ('19', '51');
INSERT INTO `score` VALUES ('20', '65');
INSERT INTO `score` VALUES ('21', '82');
INSERT INTO `score` VALUES ('22', '39');

下面是要的结果样式:

查询0-60分,60-80分,80-90分,90-100分的人数及所占百分比_第1张图片

sql语句:

select b.lv,b.num,concat(
b.num/(

select sum(b.num) as num2 from (
select a.lv,count(a.score) as num
from (
select interval(score,60,80,90) as lv, score from score
) as a group by a.lv
) b

)*100,'%'
) as bfb from (
select a.lv,count(a.score) as num
from (
select interval(score,60,80,90) as lv, score from score
) as a group by a.lv
) b

终于写好了,烦死我了!!!!!!

你可能感兴趣的:(web)