Einen Unterschied zwischen "aktuellen Zeile" und "0 vorhergehenden/folgenden" in-windowing-Klausel von Oracle analytische Funktionen?
Einige der Oracle analytische Funktionen erlauben eine windowing-Klausel angeben, eine Teilmenge der aktuellen partition, die Verwendung von Schlüsselwörtern wie "unbounded vorhergehenden/folgenden", "aktuelle Zeile", oder "value_expr vorhergehenden/folgenden" wo value_expr ist eine physische oder logische offset von der aktuellen Zeile oder einen Wert (je nachdem, ob Sie angegeben haben, auf ZEILE oder BEREICH, beziehungsweise).
Hier ist ein Beispiel mit scott/tiger, zeigt Mitarbeiter in dept 30, und die Anzahl der Mitarbeiter in der Abt beauftragt, bevor Sie (sich selbst eingeschlossen):
select deptno,
empno,
hiredate,
count(*) over (partition by deptno
order by hiredate
range between unbounded preceding and current row) cnt_hired_before1,
count(*) over (partition by deptno
order by hiredate
range between unbounded preceding and 0 preceding) cnt_hired_before2
from emp
where deptno = 30
order by deptno, hiredate;
...kann mir jemand ein Beispiel oder Dokumentation, wo "aktuelle Zeile" ist anders als "0 vorstehenden/nachfolgenden"? Es scheint nur, wie syntaktische Zucker für mich...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es eigentlich egal, welche Sie verwenden. Sie sind zwei verschiedene Möglichkeiten auszudrücken, die Fensterung, aber der Optimierer führt die Abfrage auf die gleiche Weise. Der Begriff der "aktuellen Zeile" ist eine, die üblich ist, mehrere Datenbanken mit analytischen Funktionen, nicht nur Oracle. Es ist mehr eine stilistische Differenz, die in der gleichen Weise, dass einige Leute lieber count(*) gegenüber count(1).
In der Oracle-Dokumentation, die ich zur hand haben (Oracle 9.2) sagt:
Dies bedeutet, dass Sie nicht wirklich mit 0 da es nicht ein positiver numerischer Wert. Aber natürlich ist es möglich mit der 0 davor/da folgende Sie.
Es ist alles über das, was Sie versuchen zu erreichen.
Sie verwenden möchten, können BEREICH ZWISCHEN/ZWISCHEN den ZEILEN verwenden Sie es zu finden, LAST_VALUE innerhalb der sub-set oder Dinge vergleichen, die innerhalb einer sub-set. Aber sicherlich brauchen Sie nicht für das Beispiel, das Sie zur Verfügung gestellt.