学科大于2的学生,按姓名排序资料

本文通过一个具体的MySQL查询语句示例,展示了如何从数据库中选取那些至少选修了两门课程的学生信息,并按姓名排序。
这个问题是很早的时候别人给我的,当时没答出来,后来就淡忘了。今天在几个群的热烈气氛下居然重提出来了。下面是数据库
id name course
6  d    chinese
5  c    english
3  a    math
4  b    english
7  c    math
8  e    chinese
9  a    english
10 e    sport
11 c    sport
12 e    english
15 b    sport
14 g    chinese
使用mysql语句:
SELECT * FROM tb WHERE name IN (SELECT name FROM tb GROUP BY name HAVING count( course ) >=2) ORDER BY name LIMIT 0 , 30;

第二种写法(由小芸提供)
select t.* from tb t where (select count(*) from tb where name = t.name)>=2 order by t.name LIMIT 0,30;

得到结果:
id  name  course
9   a     english
3   a     math
15  b     sport
4   b     english
7   c     math
11  c     sport
5   c     english
8   e     chinese
10  e     sport
12  e     english
2.2 高校学生信息快速查询系统 2.2.1问题描述 大学之大的一个体现就是学生多,少则几千,多则几万。学生分布在不同学科、不同 专业、不同班级。以几万计,如果采用顺序查找,每查找一位学生的平均比较次数的数量 级为0(10)。本次任务要求设计一个方便、性能高效、操作简单的学生查询系统。 2.2.2 分析与设计提示 1.学生信息 学生信息可包括两方面的内容. (1)基本信息,如学院、专业、班级、学号、姓名、性别等。 (2)用于查找特殊需求的信息,如身高、爱好、身份、奖学金、平均成绩等. 2.功能设计 作为一个学生信息查询系统,最基本的功能如下. (1)学生的增、删、改。通过这些操作建立与更新学生信息. (2)学生查找。查找功能需考虑到用户可能的、不同条件的查找,如按学院、按专业、 按班级、按姓名、按爱好或这些条件的组合。本任务的重点是查询,按不同的查询条件设置不同的查询功能。 (3)学生浏览。查到符合条件的学生信息,展示在屏幕或存储到做盘以永久保存. 385 除上述功能外,用户可根据个人对学生信息查询系统的需求理解,增设其他功能,例 如查找同宿舍的学生等。 3.存储设计 每一个学生有多个属性,其中学号可以唯一标识学生,不会重复。学院、专业、班级学生人数等信息相对固定,可以采用顺序存储,从学院、专业、班级学生所属关系来看,它 们之间具有层次特性,如图 4.2.1所示。 学院 学院1 学院I专业1 专业 学院1专业1班级1 班级 学生 .… 学院2 专业 学院n 专业 图4.2.1 大学学生所属关系 从查找效率来看,折半查找、平衡二叉树查找和散列查找性能最佳,采用这些查找方 法,需要为此建立相应的查找表。在此任务中,存储设计既要考虑学生信息管理的方便, 更需要考虑到查找的需要。方便管理的存储方式不一定适合高性能的查找,需要考虑两 者权衡的。 4.算法设计 本任务最关键的算法是适合不同查找条件的查找算法,但查找需数据源,所以,任务 中涉及的算法如下. (1)记录的增、删、改。通过这些功能,创建和维护学生信息。如果建有索引表,在主 表中进行记录的增、删、改后,一定要更新索引表和其他相关的表。 (2)查找算法。不同的查找条件,需要不同的查找算法以获得高性能,需分开设计。 例如,按学生基本属性的层次关系进行的查找效率较高。查找算法除用于专门的查找任 务外,在进行增、删、改时均需进行查找.把查找写成独立的函数,以方便调用. 2.2.3 性能要求 本系统的性能要求如下. (1)学生信息以文件形式存于磁盘,数据覆盖所有学院(学院数不少于4个),所有专 业(每个学院专业数不少于2个),所有班级(每个年级、每个专业的班级数不少于2个), 每班学生数不少于15人。系统运行时读磁盘,结束前存盘,保存本次运行的结果。 (2)界面友好,操作简单. (3)同一学生的信息只存储一次:学号必须唯一. (4)至少能够实现下列条件的快速查找,查找效率需高于O(n)。 ①按班级姓名的查找。 ②按专业和姓名的查找。 ③按学院和姓名的查找。 ④按学院、专业、班级姓名的查找。 (5)系统的完成度取决于用户对查询需求的分析及最终实现的查询功能。 编译器为Clion,编程语言为c
06-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值