我正在开发一个MYSQL,我正在寻找一个解决方案来显示按比率分组的数据。
我有一个包含课程id和课程比率的COURSE表。我有另一个表ASK,其中包含askers id,还有另一个指向COURSE表的字段course id(id对应)。对于一个SQL查询,我希望显示所有按比率分组的请求,并拒绝其他请求。要求由资历表考虑。
举个例子,我有三门课:第一门课只允许两个人,另外两门课只允许一个人。在提问表中,我们有3个提问者(杰克、乔和约翰)在第一个方向上(约翰和乔)在第二个和第三个方向上(杰克和约翰)。杰克比他大,跟在约翰和乔之后。
我想看看:

course id   studentName
-------------------------
1           JACK
1           JOHN
2           JOHN
3           JACK

最佳答案

SELECT c.courseID
       s.studentName
FROM course AS c
    JOIN asks AS a
        ON a.courseID = c.courseID
    JOIN student AS s
        ON s.studentName = a.studentName
    JOIN asks AS a2
        ON a2.courseID = c.courseID
    JOIN student AS s2
        ON s2.studentName = a2.studentName
        AND s2.seniority <= s.seniority
GROUP BY c.courseID
       , c.ratio
       , s.studentName
HAVING c.ratio >= COUNT(*)
ORDER BY c.courseID
       , s.seniority

10-02 14:49