是否可以在聚合函数中使用查询?

时间:2011-12-12 03:37:19

标签: sql aggregate-functions

SQL中是否可接受以下内容:

SELECT P.pid P.cnt
FROM Professors P
WHERE P.cnt <= Max(SELECT P2.cnt FROM Professors P2)

我在问,因为这是教授在期中考试中提出的问题。我实际上已经在SQL中尝试过它并且不允许,但我只是想确定。

3 个答案:

答案 0 :(得分:3)

从语法上讲,我会这样写:

SELECT P.pid, P.cnt
  FROM Professors P
  WHERE P.cnt <= (SELECT MAX(P2.cnt) FROM Professors P2)

从逻辑上讲,它似乎并没有真正实现,因为条件总是如此。

答案 1 :(得分:2)

这不起作用。我不认为它是标准的ANSI SQL

你可以尝试像这样重写它

SELECT P.pid P.cnt
FROM Professors P
WHERE P.cnt <= (SELECT max(P2.cnt) FROM Professors P2)

答案 2 :(得分:1)

是的,在聚合函数中允许查询。你尝试时得到的错误是什么?在P.pid SELECT P.pid P.cnt WHERE之后,对我来说很明显的是逗号。

我可能会遗漏一些显而易见的东西,但对我来说,这似乎是一些额外的SQL,什么都不做。我把它读作“为所有教授选择有关教授的信息,这些教授的数量都不及教授的数量最多” - 所有教授都是I.E.为什么不完全消除{{1}}?