我有一个面试问题,选择带有ID的最高工资。
正确答案应如下:
SELECT WORKER_REF_ID, BONUS_AMOUNT FROM Practice.Bonus
WHERE BONUS_AMOUNT = (SELECT MAX(BONUS_AMOUNT) FROM Practice.Bonus);
为什么我们不应该在这里使用子查询而不是
SELECT WORKER_REF_ID, BONUS_AMOUNT FROM Practice.Bonus
WHERE BONUS_AMOUNT = MAX(BONUS_AMOUNT);
?
抱歉,我是一个新手,有一个简单的问题。
答案 0 :(得分:1)
这是因为max
是一个聚合函数。
您可以将where
子句视为对源数据中的每一行都进行一次评估的一组规则。
您需要提供诸如max
之类的聚合函数,并带有一组要聚合的行。要求bonus_amount
之类的单个值的“最大值”是没有道理的。