精华内容
下载资源
问答
  • mySql学生成绩排名

    千次阅读 2018-06-03 17:30:11
    MySql 实现查询每个班级学习成绩前N的学生首先建一张学生成绩信息表:CREATE TABLE t_student ( stu_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID', stu_name varchar(50) NOT NULL COMMENT '学生名称', ...

    MySql 实现查询每个班级学习成绩前N的学生

    首先建一张学生成绩信息表:

    CREATE TABLE t_student (
      stu_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID',
      stu_name varchar(50) NOT NULL COMMENT '学生名称',
      score decimal(5, 2) NOT NULL COMMENT '学生总成绩',
      class_id int(11) NOT NULL COMMENT '班级ID',
      PRIMARY KEY (stu_id),
      INDEX IDX_t_student_score (score)
    )
    ENGINE = INNODB
    AUTO_INCREMENT = 7
    AVG_ROW_LENGTH = 2730
    CHARACTER SET utf8
    COLLATE utf8_general_ci
    COMMENT = '学生信息表'

    ROW_FORMAT = DYNAMIC;


    插入如下的数据:

    1	张三	80.00	1
    2	李四	81.00	1
    3	信达	70.00	1
    4	鲁西	90.00	2
    5	米亚	93.00	1
    6	凯斯	85.00	2


    查询每个班级学生成绩前三的学生信息,查询脚本如下:

    SELECT a.stu_name,a.score,a.class_id FROM t_student a LEFT JOIN t_student b
      ON a.class_id = b.class_id AND a.score < b.score
      GROUP BY a.class_id ,a.stu_id,a.score
      HAVING COUNT(b.stu_id) < 3 ;


    查询结果:



    展开全文
  • mysql查询学生所有学科总成绩排名

    千次阅读 2019-06-09 23:31:00
    学生表student ...查询所有学生各科成绩按照总成绩降序排列。 1.获取单门课程的学生成绩 select sc.stu_id,sc.score from score sc where sc.subject_id=1001 2.获取所有学生总成绩 select sc....

    学生表student

     

     

    班级表class

     

     

    课程表subject

     

     

    成绩表score

     

     

    查询所有学生各科成绩按照总成绩降序排列。

    1.获取单门课程的学生成绩

    select sc.stu_id,sc.score from score sc where sc.subject_id=1001

     


    2.获取所有学生的总成绩

    select sc.stu_id,sum(sc.score) sumscore from score sc group by sc.stu_id

     


    3.一共有三门课程,分别获取这三门课程的学生成绩表然后和学生总成绩表联合按总成绩进行降序排列得到一张新表

    select a1.stu_id,a1.score 'Java编程',a2.score '应用统计学',a3.score '数据库',b.sumscore '总成绩' from
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1001) a1
    left join
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1002) a2
    on a1.stu_id = a2.stu_id left join
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1003) a3
    on a3.stu_id = a2.stu_id left join
    (select sc.stu_id,sum(sc.score) sumscore from score sc group by sc.stu_id) b
    on a3.stu_id = b.stu_id
    order by b.sumscore desc

     

    4.和学生表联合查询得到学生姓名

    select stu.name,c.Java编程,c.应用统计学,c.数据库,c.总成绩 from
    (
    select a1.stu_id,a1.score 'Java编程',a2.score '应用统计学',a3.score '数据库',b.sumscore '总成绩'  from
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1001) a1
    left join
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1002) a2
    on a1.stu_id = a2.stu_id left join
    (select sc.stu_id,sc.score from score sc where sc.subject_id=1003) a3
    on a3.stu_id = a2.stu_id left join
    (select sc.stu_id,sum(sc.score) sumscore from score sc group by sc.stu_id) b
    on a3.stu_id = b.stu_id order by b.sumscore desc
    ) c
    left join student stu on stu.id = c.stu_id;

     


    得到题目要求的结果。
    ---------------------
    原文:https://blog.csdn.net/zqmy_/article/details/84929955 

    转载于:https://www.cnblogs.com/haoji/p/10995321.html

    展开全文
  • 假设有学生表(users) -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO...

    假设有学生表(users)

    -- ----------------------------
    -- Table structure for users
    -- ----------------------------
    DROP TABLE IF EXISTS `users`;
    CREATE TABLE `users` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of users
    -- ----------------------------
    INSERT INTO `users` VALUES ('1', '小明');
    INSERT INTO `users` VALUES ('2', '小虎');
    INSERT INTO `users` VALUES ('3', '小花');
    INSERT INTO `users` VALUES ('4', '小花');
    INSERT INTO `users` VALUES ('5', '小花');
    INSERT INTO `users` VALUES ('6', '小虎');

    课程成绩表:

    -- ----------------------------
    -- Table structure for scores
    -- ----------------------------
    DROP TABLE IF EXISTS `scores`;
    CREATE TABLE `scores` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `uid` bigint(20) DEFAULT NULL,
      `score` decimal(10,0) DEFAULT NULL,
      `type` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of scores
    -- ----------------------------
    INSERT INTO `scores` VALUES ('1', '1', '100', '语文');
    INSERT INTO `scores` VALUES ('2', '1', '100', '数学');
    INSERT INTO `scores` VALUES ('3', '3', '100', '语文');
    INSERT INTO `scores` VALUES ('4', '3', '80', '数学');

    求总成绩前10学生的名字

    SELECT
    	SUM( score ) AS total,
    	a.NAME 
    FROM
    	users AS a
    	LEFT JOIN scores AS b ON a.id = b.uid 
    GROUP BY
    NAME 
    ORDER BY
    	total DESC

    结果:

    total    name

    200    小明
    180    小花
     null    小虎

    一对多的表关系时,mysql会将-复制出来匹配多的数据

    展开全文
  • python mysql学生成绩管理系统

    千次阅读 多人点赞 2021-10-16 11:45:40
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql成绩管理系统,这个东西其实拿不出手,不过就当复习基本了 1 首先如果你python中没...

    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就当复习基本了
    1 首先如果你python中没安装mysql的驱动,还是要打开cmd命令行安装一下才可以使用:

    pip3 install PyMySQL
    在这里插入图片描述
    2 创建数据库studentdb,你可以在图形化界面sqlyog中创建:
    在这里插入图片描述

    3 然后在数据库中创建表st
    在这里插入图片描述
    4 python连接数据库的核心代码:

     db = pymysql.connect(host='localhost',
                             user='root',
                             password='333',
                             database='studentdb')
        cursor = db.cursor()
    

    user就是你自己设置的用户名,password就是你自己设置的密码,database就是你刚刚设置的数据库

    5 另外你也可以选择mysql命令行创建数据库以及数据表都是可以的在这里插入图片描述

    6 完整代码如下:

    import pymysql
    def menu():
        print("\t\t学生信息管理系统\t\t")
        print("\t\t1 添加学生\t\t")
        print("\t\t2 删除学生\t\t")
        print("\t\t3 修改学生\t\t")
        print("\t\t4 按成绩降序排序:\t\t")
        print("\t\t5 按成绩升序排序:\t\t")
        print("\t\t6 查询:\t\t")
        print("\t\t7 退出程序\t\t")
        pass
    
    def insert():
        print("插入学生信息")
        name = input("请输入学生姓名:")
        sex = input("请输入学生性别:")
        snum = input("请输入学生学号:")
        chinese = int(input("请输入学生语文成绩:"))
        math = int(input("请输入学生数学成绩:"))
        stotal = int(input("请输入学生总成绩:"))
        db = pymysql.connect(host='localhost',
                             user='root',
                             password='333',
                             database='studentdb')
        cursor = db.cursor()
    
        sql = "insert into st(sname,ssex,snum,chinese,math,stotal) values('%s','%s','%s',%d,%d,%d)"%(name,sex,snum,chinese,math,stotal)
        try:
            cursor.execute(sql)
            db.commit()
        except:
            db.rollback()
            print("error")
        db.close()
        pass
    
    
    def delete():
        while 1:
            print("删除学生信息")
            choose1 = int(input("请输入您的删除方式:1 按姓名 2 按学号: "))
            if choose1 == 1:
                print("按姓名删除")
                strname = input("请输入删除学生的名字:")
                db = pymysql.connect(host='localhost',
                                     user='root',
                                     password='333',
                                     database='studentdb')
                cursor = db.cursor()
                sql1 = "select *from st where sname='%s'"%(strname)
                cursor.execute(sql1)
                if cursor.rowcount>0:
                    try:
                        sql = "DELETE FROM st WHERE sname = '%s'" % (strname)
                        cursor.execute(sql)
                        db.commit()
                        print("删除姓名为%s的学生信息成功" % (strname))
                        break
                    except:
                        db.rollback()
                        print("error")
                    db.close()
                else:
                    print("没有这个学生的信息,输入错误")
                    break
            elif choose1 == 2:
                print("按学号删除")
                strnum = input("请输入删除学生的学号:")
                db = pymysql.connect(host='localhost',
                                     user='root',
                                     password='333',
                                     database='studentdb')
                cursor = db.cursor()
                sql1 = "select *from st where snum='%s'"%(strnum)
                cursor.execute(sql1)
                if cursor.rowcount>0:
                    sql = "DELETE FROM st WHERE snum = '%s'" % (strnum)
                    try:
                        cursor.execute(sql)
                        db.commit()
                        print("删除学号为%s学生的信息成功" % (strnum))
                        break
                    except:
                        db.rollback()
                        print("error")
                    db.close()
                else:
                    print("没有这个学生的信息,输入错误")
                    break
            else:
                print("输入错误,重新输入")
                break
                pass
            pass
        pass
    
    
    def change():
        while 1:
            print("改变学生信息")
            myname = input("请输入改变学生的名字:")
            db = pymysql.connect(host='localhost',
                                 user='root',
                                 password='333',
                                 database='studentdb')
            cursor = db.cursor()
            sql1 = "select *from st where sname='%s'"%(myname)
            cursor.execute(sql1)
            results = cursor.fetchall()
            name12='0'
            for row in results:
                name12 = row[0]
            if myname == name12:
                try:
                    sex = input("请输入学生性别:")
                    snum = input("请输入学生学号:")
                    chinese = int(input("请输入学生语文成绩:"))
                    math = int(input("请输入学生数学成绩:"))
                    stotal = int(input("请输入学生总成绩:"))
                    #有问题解决不了
                    sql3 = "update st set ssex ='%s',snum='%s',chinese=%d,math=%d,stotal=%d where sname='%s'"%(sex,snum,chinese,math,stotal,name12)
                    cursor.execute(sql3)
                    db.commit()
                    print("修改姓名为%s学生的信息成功"%(myname))
                    break
                except:
                    db.rollback()
                    print("error")
                db.close()
                break
            else:
                print("没有这个学生的信息,输入错误")
                break
                pass
            pass
        pass
    
    def sortbyscoredesc():
        print("按成绩降序")
        db = pymysql.connect(host='localhost',
                             user='root',
                             password='333',
                             database='studentdb')
        cursor = db.cursor()
    
        sql = "select * from st order by stotal desc"
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            for row in results:
                name1 = row[0]
                sex1 = row[1]
                num1 = row[2]
                chinses1 = row[3]
                math1 = row[4]
                total1 = row[5]
                # 打印结果
                print("学生姓名:%s\t,学生性别:%s\t,学生学号:%s\t,语文成绩:%d\t,数学成绩:%d\t,总成绩:%d\t" % \
                      (name1, sex1, num1, chinses1, math1, total1))
            db.commit()
        except:
            db.rollback()
            print("error")
        db.close()
        pass
    
    def sortbyscore():
        print("按成绩升序排序")
        db = pymysql.connect(host='localhost',
                             user='root',
                             password='333',
                             database='studentdb')
        cursor = db.cursor()
    
        sql = "select * from st order by stotal asc "
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            for row in results:
                name1 = row[0]
                sex1 = row[1]
                num1 = row[2]
                chinses1 = row[3]
                math1 = row[4]
                total1 = row[5]
                # 打印结果
                print("学生姓名:%s\t,学生性别:%s\t,学生学号:%s\t,语文成绩:%d\t,数学成绩:%d\t,总成绩:%d\t" % \
                      (name1, sex1, num1, chinses1, math1, total1))
            db.commit()
        except:
            db.rollback()
            print("error")
        db.close()
        pass
    def select():
        print("查询学生信息")
        db = pymysql.connect(host='localhost',user='root',password='333',database='studentdb')
        cursor = db.cursor()
        sql = "select * from st"
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            for row in results:
                name1 = row[0]
                sex1 = row[1]
                num1 = row[2]
                chinses1 = row[3]
                math1 = row[4]
                total1 = row[5]
                # 打印结果
                print("学生姓名:%s\t,学生性别:%s\t,学生学号:%s\t,语文成绩:%d\t,数学成绩:%d\t,总成绩:%d\t" % \
                      (name1,sex1,num1,chinses1,math1,total1))
            db.commit()
        except:
            db.rollback()
            print("error")
        db.close()
        pass
    
    def exitexe():
        while 1:
            print("确定要退出系统吗?退出(y) 不退出(n)")
            c = input("请输入您的选择aaaa:\t")
            if c == 'y':
                exit()
            elif c == 'n':
                break
            else:
                print("输入有误 重新输入")
            pass
        pass
    if __name__ == '__main__':
        while True:
            menu()
            choose = int(input("请输入您的选择:\t"))
            if choose == 1:
                insert()
            elif choose == 2:
                delete()
            elif choose == 3:
                change()
            elif choose == 4:
                sortbyscoredesc()
            elif choose == 5:
                sortbyscore()
            elif choose == 6:
                select()
            elif choose == 7:
                exitexe()
                pass
            pass
    
    
    
    
    
    
    
    
    
    
    
    

    7 运行结果如下:
    在这里插入图片描述

    8 总结:
    在这个案例中,我遇到的问题就是在sql语句和python间,有时候忘记commit,就要测试十几分钟来解决,然后就是如何设置用户输入错误指令的问题,我用了while循环和break pass来解决,总体上这个项目不难,对初学python的人很有用,我仅用了最基本的语法,元组,列表集合基本没用,如果你有更好的想法私信我,下一步我将它开发为一个图形化界面的系统

    展开全文
  • 主要总结了几种MySQL中常见的排名问题,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
  • mysql查询所有学生各科成绩按照总成绩降序排列

    万次阅读 多人点赞 2018-12-09 17:49:26
    查询所有学生各科成绩按照总成绩降序排列。 1.获取单门课程的学生成绩 select sc.stu_id,sc.score from score sc where sc.subject_id=1001 2.获取所有学生总成绩 select sc.stu_id,sum(sc.sco...
  • MySql 学生表 科目表 成绩表 查询学生各科成绩 2016年08月16日 01:05:02lzxomg阅读数 8155 版权声明:本文注明出处可以转载。 https://blog.csdn.net/lzxomg/article/details/52216222 下载 Navicat备份的Sql...
  • mysql 学生分数统计排名

    千次阅读 2018-09-13 17:05:11
    mysql&gt; select s1.*,(select count(0) + 1 from score s2 where s2.score &gt; s1.score)rank from score s1;       https://blog.csdn.net/jslcylcy/article/details/72627762
  • 3.根据 排名对应分数, 查找对应的学生 建表sql CREATE TABLE `student` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `code` varchar(11) DEFAULT NULL, `subject` varchar(255...
  • 学生表名为:student, 单科成绩的字段为:subject。学生名字为:name 查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10; 查询总分成绩前十:mysql语句为:select sum...
  • 如果两个分数相同,则两个分数排名(Rank)相同平分后的下一个名次应该是下一个连续的整数值。 因此,名次之间不应该有“间隔”! 此时有2种方法: 第一: select grade, (select count(distinct grade) from ...
  • 学生成绩排名:可以按照成绩高低排名进行查看 学生选择课程:可以添加学生自己的选课信息,可以编辑删除操作 修改密码:可以修改个人的登录密码功能 注销退出系统 备注:系统使用django+mysql进行开发,前端界面...
  • assess_year(学年),根据总成绩进行成绩排名,需要考虑重复成绩和每个学年的成绩排名 这是我写的 请大佬帮我改一下 ``` SELECT assess_year,student_number,id,SUM(courseScore),DENSE_RANK() OVER(ORDER BY ...
  • 比如有一个学生成绩表。张三 98 李四 78 赵六 54,如何用sql语句进行排名。并给出名次
  • 学生成绩管理系统java+swing+mysqlwindowbuilder先上主界面图片废话不多说,先上层次结构上代码了导出导入 java+swing+mysql 这是大二的java课设,主要是用了 Eclipse,windowbuilder插件和mysql完成,介于csdn上...
  • 题目参照: ...登录数据库 mysql -uroot -p 创建和选择数据库 create database dbo; use dbo; 创建数据表 create table stuscore ( name char(50) NULL, subject char(50) NULL , score ...
  • 1 且成绩比张三高的 数量为0 0成立 所以这条就被保留下来了 拿到李四 这时候进入子查询 查询type = 1 且成绩比李四高的 数量有一个 1不成立 所以这条没有被保留下来 拿到周八 这时候进入子查询 查询type = 1 且成绩...
  • 要查出总分排名前三的学生成绩信息。 首先是要查出总分前三的学生: SELECT name from a GROUP BY name ORDER BY sum(fenshu) DESC LIMIT 0,3 ; 这样,发现并没有什么问题。 于是想想,加个in 不就行了, S
  • 学生成绩管理系统数据库设计--MySQL

    万次阅读 多人点赞 2020-06-18 13:02:04
    MySQL/SQL Server 数据库设计(学生成绩管理系统) 设计大纲 1. 项目背景及需求分析 1.1 项目背景 1.2 需求分析 1.2.1 信息需求 1.2.2 功能需求 1.2.3 安全性与完整性需求 2. 概念结构设计 2.1 抽象出系统实体 2.2 ...
  • 主要是针对三个问题展开的①列出各门课程成绩最好的2位学生,要求显示字段:学号,姓名,科目,成绩;②计算每个人的成绩分数,平均分,要求显示学号,姓名,语文,数学,英语,总分,平均分;③列出数学成绩的...
  • mysql统计-关于学生成绩

    万次阅读 多人点赞 2016-03-10 13:00:14
    1. 计算每个人的总成绩排名(要求显示字段:姓名,总成绩) 2. 计算每个人的总成绩排名(要求显示字段: 学号,姓名,总成绩) 3. 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩) 4. ...
  • 学生成绩统计系统[PHP+Mysql]

    热门讨论 2009-06-27 21:55:54
    同学找我做一个学生成绩统计系统的课程设计,本想偷个懒在CSDN上找找,可是找不到,只好自己做了,忙了几天终于搞定了,不过功能比较简陋,技术含量不高,没有加入插入记录的功能,大家不要见笑,不过应付课程设计应该足够了,...
  • 网上搜索了一个经典笔试题“mysql查询每个学生的各科成绩,以及总分和平均分”,但是实操发现,文献有各种错误,而且抄袭严重,连数据都不带改的,真是无语。功夫不负有心人,终于找个一个合适的文献,特做练习,...
  • MYSQL取表中分数排名前10%的学生信息 SELECT `name` FROM( select table.`name`, @row_num:=@row_num+1 as row_num from table, (SELECT @row_num:=1) as b ORDER BY score DESC ) new_table where new_table.row_...
  • mysql查询: SELECT S.SNO, ST.SNAME, S.CNO, S.SCORE, C.CNAME FROM SCORE S, COURSE C, STUDENT ST WHERE S.CNO = C.CNO AND S.SNO = ST.SNO AND C.CNAME = 'Java Web' ORDER BY S.SCORE DESC LIMIT 0,4;...
  • 3、查询出总成绩排名,字段为姓名和分数,降序展示? select name,sum(score) from tmp_1 group by NAME order by sum(score) desc;   转载于:...
  • – 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 SELECT st.*, sc.s_score AS '语文', sc2.s_score AS '数学' FROM student st LEFT JOIN score sc ON sc.s_id=st.s_id AND sc.c_id='01' LEFT JOIN ...
  • MYSQL题目练习

    2018-05-13 18:45:11
    --20、查询学生总成绩并进行排名 --20.1 查询学生总成绩 --21、查询不同老师所教不同课程平均分从高到低显示 --22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩 --26、查询每门课程被选修的学生数 ...
  • mysql复杂查询—学生-课程-成绩

    千次阅读 2018-08-30 17:43:48
    学生表:id name 教师表: id name 课程表: id name teacher_id 成绩表: student_id course_id score ...1.查询总成绩小于60的学生id以及姓名 (根据用户分组通过having对平均成绩进行筛选) s...
  • mysql经典面试题之学生成绩

    千次阅读 2019-09-24 11:25:32
    Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 3.教师表 Teacher(TID,Tname) --TID...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,785
精华内容 714
关键字:

mysql学生总成绩排名

mysql 订阅