我是靠谱客的博主 聪慧白开水,最近开发中收集的这篇文章主要介绍sql-选修课-平均成绩-选修多门课,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

选修课表:

    DROP TABLE IF EXISTS `chosen_class`;
    CREATE TABLE `chosen_class` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `s_id` int(11) DEFAULT NULL,
              `c_id` int(11) DEFAULT NULL,
              `grade` int(11) DEFAULT NULL,
              PRIMARY KEY (`id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

   选修课表数据:

    insert  into `chosen_class`(`id`,`s_id`,`c_id`,`grade`) values (1,4,1,80),(2,1,2,70),(3,2,3,60),(4,1,4,60),(5,1,5,80),(6,2,5,50),(7,2,1,40),(8,4,6,90),(9,1,1,30);

学生表:

    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
              `s_id` int(11) NOT NULL AUTO_INCREMENT,
              `s_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_vietnamese_ci DEFAULT NULL,
              PRIMARY KEY (`s_id`)

       )  ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

学生表数据:

    insert  into `student`(`s_id`,`s_name`) values (1,'王二强'),(2,'李泽朋'),(3,'杨文龙'),(4,'王芯柯'),(5,'高航'),(6,'张三');

---------------------------------

1) 没有选修课程编号为"C1"的学生姓名

select c.c_name  from  class c LEFT JOIN student s on c.s_id=s.id

select s.s_name from  student s LEFT JOIN  chosen_class cc on s.s_id = cc.c_id LEFT JOIN  t_class c on c.id= cc.c_id where c.classname!='C1'


2) 列出每门课程名称和平均成绩,并按照成绩排序

select c.c_name, avg(cc.grade)  from chosen_class cc LEFT JOIN class c on c.c_id=cc.c_id GROUP BY c.c_name  ORDER BY cc.grade asc 


3) 选了2门课以上的学生姓名


select s.s_name,count(cc.c_id) '课程个数' from chosen_class cc LEFT JOIN student s on s.s_id=cc.s_id GROUP BY cc.s_id having count(cc.c_id) >2

最后

以上就是聪慧白开水为你收集整理的sql-选修课-平均成绩-选修多门课的全部内容,希望文章能够帮你解决sql-选修课-平均成绩-选修多门课所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部