sql代码04

-- DROP TABLE IF EXISTS `course`;
-- CREATE TABLE `course` (
--   `Cid` int(11) NOT NULL,
--   `Cname` varchar(32) DEFAULT NULL,
--   `Tid` int(11) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 
-- INSERT INTO `course` VALUES ('1', '语文', '1');
-- INSERT INTO `course` VALUES ('2', '数学', '2');
-- INSERT INTO `course` VALUES ('3', '英语', '3');
-- INSERT INTO `course` VALUES ('4', '物理', '4');
-- 
-- DROP TABLE IF EXISTS `sc`;
-- CREATE TABLE `sc` (
--   `Sid` int(11) DEFAULT NULL,
--   `Cid` int(11) DEFAULT NULL,
--   `score` int(11) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 
-- INSERT INTO `sc` VALUES ('1', '2', '81');
-- INSERT INTO `sc` VALUES ('1', '3', '67');
-- INSERT INTO `sc` VALUES ('1', '4', '58');
-- INSERT INTO `sc` VALUES ('2', '3', '92');
-- INSERT INTO `sc` VALUES ('2', '4', '68');
-- INSERT INTO `sc` VALUES ('3', '1', '61');
-- INSERT INTO `sc` VALUES ('3', '3', '88');
-- INSERT INTO `sc` VALUES ('3', '4', '56');
-- INSERT INTO `sc` VALUES ('4', '3', '90');
-- INSERT INTO `sc` VALUES ('4', '4', '93');
-- INSERT INTO `sc` VALUES ('5', '1', '31');
-- INSERT INTO `sc` VALUES ('5', '3', '78');
-- INSERT INTO `sc` VALUES ('5', '4', '53');
-- INSERT INTO `sc` VALUES ('6', '1', '23');
-- INSERT INTO `sc` VALUES ('6', '4', '71');
-- INSERT INTO `sc` VALUES ('5', '2', '72');
-- INSERT INTO `sc` VALUES ('4', '1', '36');
-- INSERT INTO `sc` VALUES ('6', '2', '72');
-- INSERT INTO `sc` VALUES ('3', '2', '74');
-- INSERT INTO `sc` VALUES ('4', '2', '74');
-- INSERT INTO `sc` VALUES ('10', '2', '58');
-- 
-- 
-- DROP TABLE IF EXISTS `student`;
-- CREATE TABLE `student` (
--   `Sid` int(11) NOT NULL ,
--   `Sname` varchar(32) DEFAULT NULL,
--   `Sage` int(11) DEFAULT NULL,
--   `Ssex` varchar(8) DEFAULT NULL
-- ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- 
-- 
-- INSERT INTO `student` VALUES ('1', '刘一一一', '18', '男');
-- INSERT INTO `student` VALUES ('2', '钱二', '19', '女');
-- INSERT INTO `student` VALUES ('3', '张三', '17', '男');
-- INSERT INTO `student` VALUES ('4', '李四', '18', '女');
-- INSERT INTO `student` VALUES ('5', '刘一', '17', '男');
-- INSERT INTO `student` VALUES ('6', '刘一', '19', '女');
-- 
-- DROP TABLE IF EXISTS `teacher`;
-- CREATE TABLE `teacher` (
--   `Tid` int(11) NOT NULL,
--   `Tname` varchar(16) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 
-- INSERT INTO `teacher` VALUES ('1', '叶平');
-- INSERT INTO `teacher` VALUES ('2', '贺高');
-- INSERT INTO `teacher` VALUES ('3', '杨艳');
-- INSERT INTO `teacher` VALUES ('4', '周磊');
-- 
-- 
-- 
-- 
-- #31 对 总指数向下取整
-- SELECT `总指数`,FLOOR(总指数) FROM ccss_sample;
-- 
-- #32 对 总指数向上取整
-- SELECT 总指数,CEILING(总指数) FROM ccss_sample;
-- #33 现状指数保留1为小数,不用四舍五入
-- SELECT ROUND(现状指数,1) FROM ccss_sample;
-- #34 每条记录总指数,现状指数,预期指数 最大的数,最小的数
-- SELECT CAST(GREATEST(总指数,现状指数,预期指数) as signed),CAST(LEAST(总指数,现状指数,预期指数) AS signed) FROM ccss_sample;
-- DESC ccss_sample
-- #35 总指数,现状指数,预期指数 各列的最大值,最小值
-- #36  学生信息显示为
-- 1   刘一一一 18   男  语文  33
-- SELECT student.*,cname,score FROM student 
-- LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid;
-- 
-- #37  学生信息显示为
-- 1   刘一一一 18   男  语文  33  叶平
SELECT student.*,cname,score,tname FROM student 
LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid 
left JOIN teacher as t on a.Tid=t.Tid;

#38 统计老师信息,显示格式为
叶平  语文  学生人数

SELECT tname,cname,COUNT(sname) FROM student 
LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid 
left JOIN teacher as t on a.Tid=t.Tid GROUP BY  tname,cname;

#39 叶平老师的学生名单

SELECT tname,sname FROM student 
LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid 
left JOIN teacher as t on a.Tid=t.Tid WHERE   tname ='叶平' GROUP BY  tname ,student.sid;

#40 同时学了数学,语文的学生

SELECT student.sid,sname,sum(if (cname in ('数学','语文'),1,0)) as 2men

FROM student 
LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid 
left JOIN teacher as t on a.Tid=t.Tid GROUP BY student.sid,sname HAVING 2men=2;

#41 每个课程的报考人数

SELECT a.cid,cname,count(student.sid) FROM student 
LEFT JOIN sc  on sc.sid =student.sid LEFT JOIN course as a on a.cid= sc.cid 
left JOIN teacher as t on a.Tid=t.Tid  GROUP BY  a.cid;

#42 所有课程都及格的学生
SELECT  sc.sid,student.sname,sum(if (score>=60,1,0)) as 及格门数
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 

GROUP BY sc.sid HAVING 及格门数=3
;

#43 总分大于260的学生
-- HAVING 及格门数=3   sc.sid,student.sname,sum(course.score) as 总分
-- SELECT  *
-- FROM student 
-- LEFT JOIN sc  on sc.sid =student.sid 
-- LEFT JOIN course on course.cid= sc.cid 
-- left JOIN teacher  on teacher.Tid=course.Tid 
-- 
-- GROUP BY sc.sid;



SELECT  sc.sid,student.sname,sum(score) as 总分 
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY sc.sid  HAVING 总分 >260
;

#44 及格人数多余不及格人数的科目


SELECT  cname,sum(if(score>=60,1,0)) as 及格数,sum(if(score<60,1,0)) as 不及格数
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY course.cid HAVING 及格数>不及格数 ;  
#45 各课的及格率

SELECT  cname,sum(if(score>=60,1,0)) /(sum(if(score>=60,1,0))+sum(if(score<60,1,0))) as 及格率
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY course.cid  ;  


#46 各老师的及格数
SELECT  cname,sum(if(score>=60,1,0)) /(sum(if(score>=60,1,0))+sum(if(score<60,1,0))) as 及格率
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY course.Tid  ;  

#47 各学生的最高分,最低分,平均分

SELECT  sc.sid,sname,max(score) as 最高分,min(score) as 最低分,avg(score) as 平均分
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY sc.sid  ;  
#48  最高分90分的学生

SELECT  sc.sid,sname,max(score) as 最高分
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY sc.sid  HAVING 最高分>=90; 

#49 语文不及格的学生
SELECT  sc.sid,cname,student.sname,sum(if (score<60,score,0)) as 分数
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 

WHERE cname='语文' GROUP BY sc.sid ,course.cid ;

#50  找出人数最多的科目
SELECT  cname,COUNT(sc.sid) as 人数
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 

GROUP BY course.cid ORDER BY 人数 desc LIMIT 1

#51 各学生按总分进行排序

SELECT  sc.sid,student.sname,sum(score) as 总分 
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
GROUP BY sc.sid  ORDER BY 总分 desc ;



#52 找到未教课的老师

SELECT  * 
FROM student 
LEFT JOIN sc  on sc.sid =student.sid 
LEFT JOIN course on course.cid= sc.cid 
left JOIN teacher  on teacher.Tid=course.Tid 
 ;
发布了70 篇原创文章 · 获赞 14 · 访问量 2630

猜你喜欢

转载自blog.csdn.net/Captain_DUDU/article/details/103424300