表:uni(课程,符号)和其他一些专栏...... 想要选择具有相同最大失败金额的所有课程。
我的代码返回一个空集。这里有一个非常相似的问题,但如果有多个具有相同的最大值,答案并没有解决如何获得最大值的问题。
选择课程,计数(符号)失败 从大学 符号=' F' GROUP BY课程失败=最大(失败);
答案 0 :(得分:0)
这是学习SQL的人们常犯的错误。在大多数数据库中,您的查询都会失败,因为您无法获取max()
的{{1}}。我很惊讶它在MySQL中有效,但确实如此(here是SQL小提琴)。
在任何情况下,您都需要一个子查询:
count()
不雅,但应该有效。您还可以将SELECT course, count(symbol) as fails
FROM uni
WHERE Symbol = 'F'
GROUP BY Course
HAVING fails = (SELECT max(fails)
FROM (SELECT count(symbol) as fails
FROM uni
WHERE Symbol = 'F'
GROUP BY course
) f
);
子句写为:
having
顺便说一句,我对你的表述有一些的同情。 SQL声称是一种描述性语言,编码器描述输出,编译器指出执行查询的最佳方法。这个理想只是部分正确。