【发布时间】:2011-06-05 15:39:28
【问题描述】:
我已经开始学习 SQL,在浏览一些阅读材料时,我偶然发现了这个查询:
SELECT MAX(SALARY) KEEP (DENSE_RANK FIRST ORDER BY
DECODE (SALARY, NULL, NULL, MONTHLY_SAL) NULLS LAST)
我已经尝试阅读这意味着什么,并提出了以下内容(请原谅我冗长而无聊的解释):
DECODE (SALARY, NULL, NULL, MONTHLY_SAL) NULLS LAST - 除非 SALARY 为 NULL,否则将返回 MONTHLY_SAL。 NULL 工资也将列在最后。
MAX(SALARY) - 将给出由 (DENSE_RANK ...) 产生的最高工资
所以我的问题是:
MAX(SALARY) 会只给出一个值吗?还是会返回整个所有行并显示最高薪水? (即,如果我有 2 行的薪水分别为 1000 和 2000,则结果将是两行的值为 2000)
DENSE_RANK FIRST ORDER BY DECODE (...) 的“总”效果是什么?我只看过 ORDER BY 的例子,不确定如果与 DECODE 结合会发生什么。
谢谢
【问题讨论】: