我刚刚开始深入研究 SQL 分析函数,对 FIRST_VALUE 有点着迷,也许它只是特定于该站点的示例查询:
-- How many days after the first hire of each department were the next
-- employees hired?
SELECT empno, deptno, hiredate ? FIRST_VALUE(hiredate)
OVER (PARTITION BY deptno ORDER BY hiredate) DAY_GAP
FROM emp
WHERE deptno IN (20, 30)
ORDER BY deptno, DAY_GAP;
EMPNO DEPTNO DAY_GAP
---------- ---------- ----------
7369 20 0
7566 20 106
7902 20 351
7788 20 722
7876 20 756
7499 30 0
7521 30 2
7698 30 70
7844 30 200
7654 30 220
7900 30 286
我正在努力处理这个查询的两个部分。首先,什么是“?” 在这里做什么?我以前只看到它用于参数化查询。其次,DAY_GAP 实际是如何计算的?查询如何知道根据此查询计算天数差?和hiredate的数据类型有关系吗?