斗鱼笔试 - SQL 划分区间统计成绩百分比
2016-10-08 13:14
567 查看
有A,B两表,A(name,subject,score),B(subject,weight),总分=各科成绩*权重的和,求0~59分,60~89,90~100的人数百分比
没有实现按区间划分统计版本:
划分区间:
版本2
CREATE TABLE `a` ( `name` varchar(255) DEFAULT NULL, `subject` varchar(255) DEFAULT NULL, `score` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `b` ( `subject` varchar(255) DEFAULT NULL, `weight` double DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
没有实现按区间划分统计版本:
SELECT COUNT(*) / ( SELECT COUNT(DISTINCT(A.`name`)) FROM A ) FROM ( SELECT a.`name` AS `name`, sum(a.score * b.weight) AS score FROM A, B WHERE A.`subject` = b.`subject` GROUP BY a.`name` ) student WHERE score >= 90
划分区间:
SELECT -- 返回字符串 ELT( -- 划分区间 INTERVAL (student.score, 0, 60, 90, 100), "1-60", "61-90", "91-100", "101-" ) AS level, count(*) / ( SELECT count(DISTINCT(A.`name`)) FROM A ) AS per FROM ( SELECT a.`name` AS `name`, sum(a.score * b.weight) AS score FROM A, B WHERE A.`subject` = b.`subject` GROUP BY a.`name` ) student GROUP BY ELT( INTERVAL (student.score, 0, 60, 90, 100), "1-60", "61-90", "91-100", "101-" );
版本2
SELECT -- 返回字符串 ( CASE WHEN student.score >= 0 AND student.score < 60 THEN "0~59" WHEN student.score >= 60 AND student.score < 90 THEN "60~89" WHEN student.score >= 90 AND student.score < 100 THEN "90~99" ELSE "100+" END ) AS LEVEL, ( count(*) / ( SELECT count(DISTINCT(A.`name`)) FROM A ) ) AS per FROM ( SELECT a.`name` AS `name`, sum(a.score * b.weight) AS score FROM A, B WHERE A.`subject` = b.`subject` GROUP BY a.`name` ) student GROUP BY ( CASE WHEN student.score >= 0 AND student.score < 60 THEN "0~59" WHEN student.score >= 60 AND student.score < 90 THEN "60~89" WHEN student.score >= 90 AND student.score < 100 THEN "90~99" ELSE "100+" END );
相关文章推荐
- 笔试题:SQL统计各班成绩第一名的学生信息
- sql统计-关于学生成绩
- SQL统计,学生成绩
- sql分类汇总统计,字符串类型的区间数值
- 学生各门课程成绩统计SQL语句大全
- SQL 课程成绩统计报表 例子
- sql统计-关于学生成绩
- 统计SQL语句耗时百分比
- 一条SQL语句统计百分比
- sql统计-关于学生成绩
- SQL编程实例:Oracle,统计n次考试的成绩
- 学生各门课程成绩统计SQL语句大全
- 统计学生成绩的SQL
- Oracle开发之SQL语句案例—学生成绩统计
- sql分类汇总统计,字符串类型的区间数值
- sql统计-关于学生成绩(转)
- sql统计-关于学生成绩
- 【转】 sql统计-关于学生成绩
- sql题目,统计每个班级考试成绩的合格率,优秀率
- sql统计-关于学生成绩