我正在开发一个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