【问题标题】:Favourite Course in Student Course Table Query学生课程表查询收藏课程
【发布时间】:2012-10-15 07:32:22
【问题描述】:

我有三张桌子:

Student(StudentID, StudentName)
Course(CourseID, CourseName)
StudentCourse(StudentID, CourseID) -- junction table to assign courses to students

如何查询以获得最喜欢的课程——“注册学生人数最多的课程”?

SQLFiddle

【问题讨论】:

  • 顺便说一句 - 不是每个人都可以在任何给定时间查看所有网站,因此最好在这里发布您的代码 - 而不是其他地方,这也意味着将来人们可以阅读您的整个问题

标签: sql join


【解决方案1】:

TOP...WITH TIES试试吧

SELECT  TOP 1 WITH TIES c.CourseName,
        COUNT(c.CourseID) totalCount
FROM    student a
        INNER JOIN studentcourse b
            ON a.studentID = b.studentID
        INNER JOIN course c
            ON b.courseID = c.courseID
GROUP BY c.CourseName
ORDER BY totalCount DESC

WITH TIES 显示具有相同最高计数的记录。

SQLFiddle Demo

【讨论】:

  • 不知道WITH TIES + 1
【解决方案2】:
SELECT TOP 1 WITH TIES COURSEID 
FROM   STUDENTCOURSE 
GROUP  BY COURSEID 
ORDER  BY Count(*) DESC

【讨论】:

  • 如果有相同数量的最高课程怎么办?例如,数学 = 2,科学 = 2,英语 = 2。由于TOP 1,因此只会显示一条记录
  • TOP 1 将只返回一个,如果我有两个最喜欢的课程怎么办,请参阅 fiddle
  • @Gidil 非常感谢,如果我能通过 TIES 了解更多关于 TOP 的信息,我会很高兴
  • @SHAKIRSHABBIR:加入我here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2022-10-02
  • 1970-01-01
  • 2021-11-28
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多