一道面试题中涉及到的SQL的高级使用

拥有回忆 提交于 2019-11-30 14:15:08

题目是这样的:

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!