first_value over order by range : First Last Value « Analytical Functions « Oracle PL / SQL

Home
Oracle PL / SQL
1.Aggregate Functions
2.Analytical Functions
3.Char Functions
4.Constraints
5.Conversion Functions
6.Cursor
7.Data Type
8.Date Timezone
9.Hierarchical Query
10.Index
11.Insert Delete Update
12.Large Objects
13.Numeric Math Functions
14.Object Oriented Database
15.PL SQL
16.Regular Expressions
17.Report Column Page
18.Result Set
19.Select Query
20.Sequence
21.SQL Plus
22.Stored Procedure Function
23.Subquery
24.System Packages
25.System Tables Views
26.Table
27.Table Joins
28.Trigger
29.User Previliege
30.View
31.XML
Oracle PL / SQL » Analytical Functions » First Last Value 
first_value over order by range
 
SQL> CREATE TABLE EMP (EMPNO NUMBER(4NOT NULL,
  2                    ENAME VARCHAR2(10),
  3                    JOB VARCHAR2(9),
  4                    MGR NUMBER(4),
  5                    HIREDATE DATE,
  6                    SAL NUMBER(72),
  7                    COMM NUMBER(72),
  8                    DEPTNO NUMBER(2));

Table created.

SQL>
SQL> INSERT INTO EMP VALUES (7369'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20);

row created.

SQL> INSERT INTO EMP VALUES (7499'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 160030030);

row created.

SQL> INSERT INTO EMP VALUES (7521'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 125050030);

row created.

SQL> INSERT INTO EMP VALUES (7566'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20);

row created.

SQL> INSERT INTO EMP VALUES (7654'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250140030);

row created.

SQL> INSERT INTO EMP VALUES (7698'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);

row created.

SQL> INSERT INTO EMP VALUES (7782'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);

row created.

SQL> INSERT INTO EMP VALUES (7788'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);

row created.

SQL> INSERT INTO EMP VALUES (7839'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);

row created.

SQL> INSERT INTO EMP VALUES (7844'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500030);

row created.

SQL> INSERT INTO EMP VALUES (7876'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);

row created.

SQL> INSERT INTO EMP VALUES (7900'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30);

row created.

SQL> INSERT INTO EMP VALUES (7902'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);

row created.

SQL> INSERT INTO EMP VALUES (7934'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

row created.

SQL>
SQL> select ename, sal, hiredate, hiredate+100 windowtop,
  2         first_valueename )
  3             over order by hiredate desc
  4                    range 100 preceding ename_prec,
  5         first_valuehiredate )
  6             over order by hiredate desc
  7                    range 100 preceding hiredate_prec
  8    from emp
  9   order by hiredate desc
 10  /

ENAME            SAL HIREDATE  WINDOWTOP ENAME_PREC HIREDATE_
---------- --------- --------- --------- ---------- ---------
ADAMS        1100.00 12-JAN-83 22-APR-83 ADAMS      12-JAN-83
SCOTT        3000.00 09-DEC-82 19-MAR-83 ADAMS      12-JAN-83
MILLER       1300.00 23-JAN-82 03-MAY-82 MILLER     23-JAN-82
FORD         3000.00 03-DEC-81 13-MAR-82 MILLER     23-JAN-82
JAMES         950.00 03-DEC-81 13-MAR-82 MILLER     23-JAN-82
KING         5000.00 17-NOV-81 25-FEB-82 MILLER     23-JAN-82
MARTIN       1250.00 28-SEP-81 06-JAN-82 FORD       03-DEC-81
TURNER       1500.00 08-SEP-81 17-DEC-81 FORD       03-DEC-81
CLARK        2450.00 09-JUN-81 17-SEP-81 TURNER     08-SEP-81
BLAKE        2850.00 01-MAY-81 09-AUG-81 CLARK      09-JUN-81
JONES        2975.00 02-APR-81 11-JUL-81 CLARK      09-JUN-81

ENAME            SAL HIREDATE  WINDOWTOP ENAME_PREC HIREDATE_
---------- --------- --------- --------- ---------- ---------
WARD         1250.00 22-FEB-81 02-JUN-81 BLAKE      01-MAY-81
ALLEN        1600.00 20-FEB-81 31-MAY-81 BLAKE      01-MAY-81
SMITH         800.00 17-DEC-80 27-MAR-81 WARD       22-FEB-81

14 rows selected.

SQL>
SQL> drop table emp;

Table dropped.

SQL>

 
Related examples in the same category
1.FIRST_VALUE and LAST_VALUE: which rows are used in the calculation of the window function for each row
2.first_value over partition
3.FIRST_VALUE() get the first rows in a window
4.LAST_VALUE(): get the last rows in a window
5.The query divides the current month’s sales amount by the previous month’s sales amount
6.last_value over range
7.last_value over range between
8.Avg over, first_value over
9.first_value over order by
10.first_value over order by rows
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.