我需要一个最大值的字符串



我有这样的要求:

SELECT s_name, count(Mark)
FROM specialty
join interns_specialty on specialty.specialty_id = interns_specialty.specialty_id
join practice_result on practice_result.Intern_id = interns_specialty.intern_id
where Mark=5
group by specialty.specialty_id
ORDER by count(Mark) DESC;

这就是我从我的quire那里得到的,我需要获得最多优秀分数的一行,如果有两行或更多这样的行,我必须全部获得我需要得到一个字符串的专业名称,有更多的优秀分数比其他。但是我不能t understand how to do this. I tried to use "Limit", but if i have two or more specialties - it will be work incorrect. I couldn将MAX与其他聚合函数一起使用,所以我需要一个建议。

我想你想要rank():

SELECT m.*
FROM (SELECT s.s_name, COUNT(*),
RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM specialty s JOIN
interns_specialty ins
ON s.specialty_id = ins.specialty_id JOIN
practice_result pr
ON pr.Intern_id = ins.intern_id
WHERE Mark = 5
GROUP BY s.specialty_id
) m
WHERE seqnum = 1;