首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写两个查询(根据平均成绩对学生和城市进行排序)

编写两个查询(根据平均成绩对学生和城市进行排序)
EN

Stack Overflow用户
提问于 2014-08-10 19:28:07
回答 2查看 255关注 0票数 0

我有三张表:

代码语言:javascript
复制
1) Students: studentID (KEY), name, surname, address
2) Exams: examID (KEY), examName
3) Grades: studenID (KEY), examID(KEY), grade

如何编写SQL查询来显示最优秀的学生(例如,那些平均成绩在9分以上的学生)?

如何编写SQL查询来根据学生的平均成绩对城市(列地址)进行排名?

我是一名系统工程师,在Unix和Linux系统上工作,我是SQL的新手,我只知道SQL的基础知识,我在过去的三天里一直在尝试这样做,但没有成功,所以请帮助我。我认为对于一个有SQL经验的人来说,这不是一件复杂的事情。非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2014-08-10 20:52:42

您的第一个显示最优秀学生的查询:

代码语言:javascript
复制
  SELECT student.surname, students.surename, students.address
  FROM 
  students INNER JOIN Grades ON Grades.StudentID=Students.StudentID 
  INNER JOIN Exams ON Grades.examID=exams.examID WHERE Grades.grade=
  (SELECT MAX(grade) FROM Grades WHERE examID=exams.examID) 

对城市进行排名的第二个查询:

代码语言:javascript
复制
  SELECT students.address
  FROM 
  students INNER JOIN Grades ON Grades.StudentID=Students.StudentID 
  INNER JOIN Exams ON Grades.examID=exams.examID order by grades.grade DESC
票数 0
EN

Stack Overflow用户

发布于 2014-08-11 16:14:07

在这里引用小提琴:

链接1:http://sqlfiddle.com/#!4/ab4de6/19

链接2:http://sqlfiddle.com/#!4/ab4de6/32

下面的查询应该对您在Oracle中有帮助:

代码语言:javascript
复制
--List of Students having Average grade >=9

SELECT S.studentID, S.NAME, S.SURNAME, S.ADDRESS, A.AVG_GRADE FROM 
STUDENTS S JOIN
( 
   SELECT studentID, AVG(GRADE) AVG_GRADE FROM GRADES
   GROUP BY studentID

)  A
ON S.studentID = A.studentID
AND A.AVG_GRADE >=9

ORDER BY A.AVG_GRADE, S.studentID;


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

--- Rank cities
SELECT A.ADDRESS, A.AVG_GRADE, ROWNUM RANKING FROM
(
    SELECT S.ADDRESS, AVG(G.GRADE) AVG_GRADE FROM
    STUDENTS  S JOIN GRADES  G
    ON S.STUDENTID = G.STUDENTID
    GROUP BY S.ADDRESS
    ORDER BY 2 DESC
  ) A;

您需要了解以下概念。

  1. INNER QUERY / SUB QUERY
  2. JOINS
  3. AGGREGATE FUNCTIONS (平均Calculations)
  4. GROUP BY
  5. ORDER BY
  6. ROWNUM
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25228130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档