题目是这样的:
3、现在需要做一个全省的学生成绩资料库,系统功能和信息如下:
需要保存的信息有学生ID,学生姓名,学生成绩,所在学校,所在城市,时间
A、请你按照以上需求设计表结构,包括需要建哪些索引(只可以建一张表)
B、请各用一句SQL写出实现以下3个排名的查询语句(请用单语句,不要用嵌套语句)
(1).全省学生成绩排名前100的名单
(2).每个学校的学生平均成绩,请从大到小排列
(3).全省总共有多少个学校
A、表的结构:
studentInfo(ID,Name,Grade,School,City,Date)
至于建立索引,我脑子中还真没有存货。因为平常自己做着玩的时候,只关注了功能的实现,用到数据库的时候,也只是建好表,导入几条数据,并完成业务逻辑和数据库交互。并不关心数据库的使用效率,那些字段该建立索引。我脑子中知道查询比较频繁的字段应该建立索引。但是,还真没有实践过。在学校学的知识,真的是纸上谈兵,到了实际运用还是真有点蒙蔽。
B、(1)、select top 100 *from studentInfo order by Grade DESC
这个题目的限制,纯粹就是为了考察对SQL语言的使用掌握情况。要是放在平常,我就会,用Select语句查出结果集,然后放入Map中,排序。当然,如果数据太多了,我平常的方法就有点傻逼了。还是用数据库自带的方法效率更高一些。
(2)select school,AVG(Grade) from studentInfo
Group by school
order by AVG(Grade) DESC
(3)select COUNT(DISTICNCT(school)) from studentInfo
来源:oschina
链接:https://my.oschina.net/u/2410373/blog/687354