<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FAnalytical_Functions%2FIntroduction</id>
		<title>Oracle PL/SQL Tutorial/Analytical Functions/Introduction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FAnalytical_Functions%2FIntroduction"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Analytical_Functions/Introduction&amp;action=history"/>
		<updated>2026-04-04T11:48:30Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Analytical_Functions/Introduction&amp;diff=3378&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Analytical_Functions/Introduction&amp;diff=3378&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Analytical_Functions/Introduction&amp;diff=3379&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Analytical_Functions/Introduction&amp;diff=3379&amp;oldid=prev"/>
				<updated>2010-05-26T10:06:08Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Calculate with Analytical functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT id, first_name, description, salary,&lt;br /&gt;
  2    ROUND(AVG(salary) OVER(PARTITION BY description))&lt;br /&gt;
  3        &amp;quot;Avg-group&amp;quot;,&lt;br /&gt;
  4    ROUND(salary - AVG(salary) OVER(PARTITION&lt;br /&gt;
  5        BY description)) &amp;quot;Diff.&amp;quot;&lt;br /&gt;
  6  FROM employee&lt;br /&gt;
  7  ORDER BY description, first_name&lt;br /&gt;
  8  /&lt;br /&gt;
ID   FIRST_NAME DESCRIPTION         SALARY  Avg-group      Diff.&lt;br /&gt;
---- ---------- --------------- ---------- ---------- ----------&lt;br /&gt;
04   Celia      Manager            2344.78       5121      -2777&lt;br /&gt;
07   David      Manager            7897.78       5121       2777&lt;br /&gt;
01   Jason      Programmer         1234.56       1235          0&lt;br /&gt;
02   Alison     Tester             6661.78       4219       2442&lt;br /&gt;
03   James      Tester             6544.78       4219       2325&lt;br /&gt;
08   James      Tester             1232.78       4219      -2987&lt;br /&gt;
06   Linda      Tester             4322.78       4219        103&lt;br /&gt;
05   Robert     Tester             2334.78       4219      -1885&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== More Than One Analytical Function May Be Used in a Single Statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT ID, first_name, salary,&lt;br /&gt;
  2    RANK() OVER(ORDER BY salary desc) toprank_desc,&lt;br /&gt;
  3    RANK() OVER(ORDER BY salary ASC)  toprank_asc&lt;br /&gt;
  4  FROM employee&lt;br /&gt;
  5  ORDER BY first_name&lt;br /&gt;
  6  /&lt;br /&gt;
ID   FIRST_NAME     SALARY TOPRANK_DESC TOPRANK_ASC&lt;br /&gt;
---- ---------- ---------- ------------ -----------&lt;br /&gt;
02   Alison        6661.78            2           7&lt;br /&gt;
04   Celia         2344.78            5           4&lt;br /&gt;
07   David         7897.78            1           8&lt;br /&gt;
03   James         6544.78            3           6&lt;br /&gt;
08   James         1232.78            8           1&lt;br /&gt;
01   Jason         1234.56            7           2&lt;br /&gt;
06   Linda         4322.78            4           5&lt;br /&gt;
05   Robert        2334.78            6           3&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== The Analytical Functions in Oracle (Analytical Functions I)==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The analytical functions fall into categories:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;ranking,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;aggregate,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;row comparison,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;statistical.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The function has this syntax:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;function(&amp;lt;arguments&amp;gt;) OVER(&amp;lt;analytic clause&amp;gt;)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For example, SELECT RANK() OVER(ORDER BY salary) FROM employee&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;arguments&amp;gt; part may be empty, as it is in the above example: &amp;quot;RANK().&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;analytic clause&amp;gt; contains an ordering, partitioning, or windowing clause.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ordering clause in the above example is &amp;quot;OVER(ORDER BY salary).&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;An analytical function that uses an ordering may also partition the result set based on some attribute value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Row-numbering and Ranking Functions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;ROW_NUMBER&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;RANK&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;DENSE_RANK&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;PERCENT_RANK&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;CUME_DIST&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;NTILE&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
16. 1. Introduction&lt;br /&gt;
16. 1. 1. &lt;br /&gt;
The Analytical Functions in Oracle (Analytical Functions I)&lt;br /&gt;
16. 1. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/TheOrderinWhichtheAnalyticalFunctionIsProcessedintheSQLStatement.htm&amp;quot;&amp;gt;The Order in Which the Analytical Function Is Processed in the SQL Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/UsingtheAnalyticFunctions.htm&amp;quot;&amp;gt;Using the Analytic Functions&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/UsingtheRankingFunctions.htm&amp;quot;&amp;gt;Using the Ranking Functions&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/MoreThanOneAnalyticalFunctionMayBeUsedinaSingleStatement.htm&amp;quot;&amp;gt;More Than One Analytical Function May Be Used in a Single Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/CalculatewithAnalyticalfunctions.htm&amp;quot;&amp;gt;Calculate with Analytical functions&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Order in Which the Analytical Function Is Processed in the SQL Statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
FROM x&lt;br /&gt;
WHERE&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&amp;lt;p&amp;gt;is executed by the database engine by&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;scanning a table, x, and&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;retrieving rows when the WHERE clause is true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;WHERE is often called a &amp;quot;row filter.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SELECT .. FROM .. WHERE may contain joins and GROUP BY as well as WHERE.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If there were GROUPING and HAVING clauses, then the criteria in HAVING would be applied after the result of the SELECT .. WHERE is completed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;HAVING is often called an &amp;quot;after filter&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;HAVING is after the WHERE, and after the GROUP BY is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ordering is done last, after the result set has been established from SELECT .. FROM .. WHERE .. HAVING.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The analytical function is performed just before the ORDER BY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;All grouping, joins, WHERE clauses, and HAVING clauses will have already been applied.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the Analytic Functions==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The analytic functions are organized into the following categories:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;Ranking functions calculate ranks, percentiles, and n-tiles (for example, tertiles, quartiles).&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Inverse percentile functions calculate the value that corresponds to a percentile.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Window functions calculate cumulative and moving aggregates.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Reporting functions calculate things like market shares.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Lag and lead functions get a value in a row where that row is a certain number of rows away from the current row.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;First and last functions get the first and last values in an ordered group.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Linear regression functions fit an ordinary-least-squares regression line to a set of number pairs.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Hypothetical rank and distribution functions calculate the rank and percentile that a new row would have if you inserted it into a table.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Quote from:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Oracle Database 10g SQL (Osborne ORACLE Press Series) (Paperback)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Paperback: 608 pages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Publisher: McGraw-Hill Osborne Media; 1st edition (February 20, 2004)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Language: English&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# ISBN-10: 0072229810&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# ISBN-13: 978-0072229813&amp;lt;/p&amp;gt;&lt;br /&gt;
16. 1. Introduction&lt;br /&gt;
16. 1. 1. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/TheAnalyticalFunctionsinOracleAnalyticalFunctionsI.htm&amp;quot;&amp;gt;The Analytical Functions in Oracle (Analytical Functions I)&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/TheOrderinWhichtheAnalyticalFunctionIsProcessedintheSQLStatement.htm&amp;quot;&amp;gt;The Order in Which the Analytical Function Is Processed in the SQL Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 3. &lt;br /&gt;
Using the Analytic Functions&lt;br /&gt;
16. 1. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/UsingtheRankingFunctions.htm&amp;quot;&amp;gt;Using the Ranking Functions&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/MoreThanOneAnalyticalFunctionMayBeUsedinaSingleStatement.htm&amp;quot;&amp;gt;More Than One Analytical Function May Be Used in a Single Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/CalculatewithAnalyticalfunctions.htm&amp;quot;&amp;gt;Calculate with Analytical functions&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the Ranking Functions==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You use the ranking functions to calculate ranks, percentiles, and n-tiles.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;RANK() returns the rank of items in a group.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;RANK() leaves a gap in the sequence of rankings in the event of a tie.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;DENSE_RANK() returns the rank of items in a group.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;DENSE_RANK() doesn&amp;quot;t leave a gap in the sequence of rankings in the event of a tie.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;CUME_DIST() returns the position of a specified value relative to a group of values.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;CUME_DIST() is short for cumulative distribution.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;PERCENT_RANK() returns the percent rank of a value relative to a group of values.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;NTILE() returns n-tiles: tertiles, quartiles, and so on.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;ROW_NUMBER() returns a number with each row in a group.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Quote from:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Oracle Database 10g SQL (Osborne ORACLE Press Series) (Paperback)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Paperback: 608 pages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Publisher: McGraw-Hill Osborne Media; 1st edition (February 20, 2004)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# Language: English&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# ISBN-10: 0072229810&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;# ISBN-13: 978-0072229813&amp;lt;/p&amp;gt;&lt;br /&gt;
16. 1. Introduction&lt;br /&gt;
16. 1. 1. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/TheAnalyticalFunctionsinOracleAnalyticalFunctionsI.htm&amp;quot;&amp;gt;The Analytical Functions in Oracle (Analytical Functions I)&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/TheOrderinWhichtheAnalyticalFunctionIsProcessedintheSQLStatement.htm&amp;quot;&amp;gt;The Order in Which the Analytical Function Is Processed in the SQL Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/UsingtheAnalyticFunctions.htm&amp;quot;&amp;gt;Using the Analytic Functions&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 4. &lt;br /&gt;
Using the Ranking Functions&lt;br /&gt;
16. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/MoreThanOneAnalyticalFunctionMayBeUsedinaSingleStatement.htm&amp;quot;&amp;gt;More Than One Analytical Function May Be Used in a Single Statement&amp;lt;/a&amp;gt;&lt;br /&gt;
16. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0320__Analytical-Functions/CalculatewithAnalyticalfunctions.htm&amp;quot;&amp;gt;Calculate with Analytical functions&amp;lt;/a&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>