我遇到了两个似乎有相同结果的查询:在分区上应用聚合函数.
我想知道这两个查询之间是否有任何区别:
SELECT empno,
deptno,
sal,
MIN(sal) OVER (PARTITION BY deptno) "Lowest",
MAX(sal) OVER (PARTITION BY deptno) "Highest"
FROM empl
SELECT empno,
deptno,
sal,
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) "Lowest",
MAX(sal) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) "Highest"
FROM empl
Run Code Online (Sandbox Code Playgroud)
第一个版本更合乎逻辑,但第二个版本可能是某种特殊情况,也许是一些性能优化.