-- 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
;
sql代码04
猜你喜欢
转载自blog.csdn.net/Captain_DUDU/article/details/103424300
今日推荐
周排行