having-clause多个最大值的最大计数

时间:2014-05-13 21:36:09

标签: mysql sql max having

表:uni(课程,符号)和其他一些专栏...... 想要选择具有相同最大失败金额的所有课程。

我的代码返回一个空集。这里有一个非常相似的问题,但如果有多个具有相同的最大值,答案并没有解决如何获得最大值的问题。

选择课程,计数(符号)失败 从大学 符号=' F' GROUP BY课程失败=最大(失败);

1 个答案:

答案 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声称是一种描述性语言,编码器描述输出,编译器指出执行查询的最佳方法。这个理想只是部分正确。