2

私は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

私はこのクエリの2つの部分で苦労しています。まず、「?」とは何ですか?ここで行って?これまで、パラメーター化されたクエリに使用されるのを見たことがあります。次に、DAY_GAPは実際にどのように計算されますか?クエリは、このクエリに基づいて日数の差を計算することをどのように知っていますか?それはhiredateのデータ型と関係がありますか?

4

1 に答える 1

3

まず、「?」とは?ここで行って?

それは間違い; -(マイナス記号)にする必要があります。Basu は自分の Oracle トランスクリプトをコピーして、ASCII マイナス記号を Unicode エン ダッシュにサイレントに変換するプログラムにコピー アンド ペーストし、そこから非 ASCII 文字をサイレントに?.

次に、DAY_GAP は実際にどのように計算されているのでしょうか? クエリは、このクエリに基づいて日数の差を計算する方法を知っていますか? Hiredate のデータ型と何か関係がありますか?

前を参照してください。と書くとhiredate - FIRST_VALUE(hiredate) OVER (...)、いきなり意味が通じます!:-)

于 2012-10-04T17:43:26.667 に答える