<?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%2FAnalytical_Functions%2FNULLs_Last</id>
		<title>Oracle PL/SQL/Analytical Functions/NULLs Last - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FAnalytical_Functions%2FNULLs_Last"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Analytical_Functions/NULLs_Last&amp;action=history"/>
		<updated>2026-05-14T15:46:25Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Analytical_Functions/NULLs_Last&amp;diff=1388&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/Analytical_Functions/NULLs_Last&amp;diff=1388&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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/Analytical_Functions/NULLs_Last&amp;diff=1389&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Analytical_Functions/NULLs_Last&amp;diff=1389&amp;oldid=prev"/>
				<updated>2010-05-26T09:55:50Z</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;==Control whether nulls are the highest or lowest in a group using NULLS LAST==&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;
&lt;br /&gt;
SQL&amp;gt; CREATE TABLE all_sales (&lt;br /&gt;
  2    year INTEGER,&lt;br /&gt;
  3    month INTEGER,&lt;br /&gt;
  4    prd_type_id INTEGER,&lt;br /&gt;
  5    emp_id INTEGER ,&lt;br /&gt;
  6    amount NUMBER(8, 2)&lt;br /&gt;
  7  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,1    ,1          ,21    ,16034.84);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,2    ,1          ,21    ,15644.65);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,3    ,2          ,21    ,20167.83);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,4    ,2          ,21    ,25056.45);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,5    ,2          ,21    ,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,6    ,1          ,21    ,15564.66);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,7    ,1          ,21    ,15644.65);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,8    ,1          ,21    ,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,9    ,1          ,21    ,19654.57);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,10   ,1          ,21    ,21764.19);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,11   ,1          ,21    ,13026.73);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2006,12   ,2          ,21    ,10034.64);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,1    ,2          ,22    ,16634.84);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,1    ,2          ,21    ,26034.84);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,2    ,1          ,21    ,12644.65);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,3    ,1          ,21    ,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,4    ,1          ,21    ,25026.45);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,5    ,1          ,21    ,17212.66);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,6    ,1          ,21    ,15564.26);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,7    ,2          ,21    ,62654.82);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,8    ,2          ,21    ,26434.82);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,9    ,2          ,21    ,15644.65);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,10   ,2          ,21    ,21264.19);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,11   ,1          ,21    ,13026.73);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT)&lt;br /&gt;
  2                  values(2005,12   ,1          ,21    ,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from all_sales;&lt;br /&gt;
      YEAR      MONTH PRD_TYPE_ID     EMP_ID     AMOUNT&lt;br /&gt;
---------- ---------- ----------- ---------- ----------&lt;br /&gt;
      2006          1           1         21   16034.84&lt;br /&gt;
      2006          2           1         21   15644.65&lt;br /&gt;
      2006          3           2         21   20167.83&lt;br /&gt;
      2006          4           2         21   25056.45&lt;br /&gt;
      2006          5           2         21&lt;br /&gt;
      2006          6           1         21   15564.66&lt;br /&gt;
      2006          7           1         21   15644.65&lt;br /&gt;
      2006          8           1         21&lt;br /&gt;
      2006          9           1         21   19654.57&lt;br /&gt;
      2006         10           1         21   21764.19&lt;br /&gt;
      2006         11           1         21   13026.73&lt;br /&gt;
      2006         12           2         21   10034.64&lt;br /&gt;
      2005          1           2         22   16634.84&lt;br /&gt;
      2005          1           2         21   26034.84&lt;br /&gt;
      2005          2           1         21   12644.65&lt;br /&gt;
      2005          3           1         21&lt;br /&gt;
      2005          4           1         21   25026.45&lt;br /&gt;
      2005          5           1         21   17212.66&lt;br /&gt;
      2005          6           1         21   15564.26&lt;br /&gt;
      2005          7           2         21   62654.82&lt;br /&gt;
      2005          8           2         21   26434.82&lt;br /&gt;
      2005          9           2         21   15644.65&lt;br /&gt;
      2005         10           2         21   21264.19&lt;br /&gt;
      2005         11           1         21   13026.73&lt;br /&gt;
      2005         12           1         21&lt;br /&gt;
25 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --Control whether nulls are the highest or lowest in a group using NULLS LAST&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT&lt;br /&gt;
  2   prd_type_id, SUM(amount),&lt;br /&gt;
  3   RANK() OVER (ORDER BY SUM(amount) DESC NULLS LAST) AS rank,&lt;br /&gt;
  4   DENSE_RANK() OVER (ORDER BY SUM(amount) DESC NULLS LAST) AS&lt;br /&gt;
  5    dense_rank&lt;br /&gt;
  6  FROM all_sales&lt;br /&gt;
  7  GROUP BY prd_type_id&lt;br /&gt;
  8  ORDER BY prd_type_id;&lt;br /&gt;
PRD_TYPE_ID SUM(AMOUNT)       RANK DENSE_RANK&lt;br /&gt;
----------- ----------- ---------- ----------&lt;br /&gt;
          1   200809.04          2          2&lt;br /&gt;
          2   223927.08          1          1&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table all_sales;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==If NULLS LAST is left out of the final ORDER BY, the effect will be lost==&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;
&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    empno              Number(3)  NOT NULL, -- Employee ID&lt;br /&gt;
  3    ename              VARCHAR2(10 BYTE),   -- Employee Name&lt;br /&gt;
  4    hireDate          DATE,                -- Date Employee Hired&lt;br /&gt;
  5    orig_salary        Number(8,2),         -- Orignal Salary&lt;br /&gt;
  6    curr_salary        Number(8,2),         -- Current Salary&lt;br /&gt;
  7    region             VARCHAR2(1 BYTE)     -- Region where employeed&lt;br /&gt;
  8  )&lt;br /&gt;
  9  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data for employee table&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                   orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(122,&amp;quot;Alison&amp;quot;,to_date(&amp;quot;19960321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 45000,       NULL,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(123, &amp;quot;James&amp;quot;,to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 23000,       32000,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(104,&amp;quot;Celia&amp;quot;,to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       58000,        &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(105,&amp;quot;Robert&amp;quot;,to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 31000,      NULL,        &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(116,&amp;quot;Linda&amp;quot;, to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       53000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(117,&amp;quot;David&amp;quot;, to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 78000,       NULL,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(108,&amp;quot;Jode&amp;quot;,  to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 21000,       29000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&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;
Hit a key to continue&lt;br /&gt;
     EMPNO ENAME      HIREDATE  ORIG_SALARY CURR_SALARY R&lt;br /&gt;
---------- ---------- --------- ----------- ----------- -&lt;br /&gt;
       122 Alison     21-MAR-96       45000             E&lt;br /&gt;
       123 James      12-DEC-78       23000       32000 W&lt;br /&gt;
       104 Celia      24-OCT-82                   58000 E&lt;br /&gt;
       105 Robert     15-JAN-84       31000             W&lt;br /&gt;
       116 Linda      30-JUL-87                   53000 E&lt;br /&gt;
       117 David      31-DEC-90       78000             W&lt;br /&gt;
       108 Jode       17-SEP-96       21000       29000 E&lt;br /&gt;
7 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- If NULLS LAST is left out of the final ORDER BY, the effect will be lost.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT empno, ename, curr_salary,&lt;br /&gt;
  2    RANK()&lt;br /&gt;
  3    OVER(ORDER BY curr_salary desc) salary&lt;br /&gt;
  4  FROM employee&lt;br /&gt;
  5  ORDER BY curr_salary desc;&lt;br /&gt;
Hit a key to continue&lt;br /&gt;
     EMPNO ENAME      CURR_SALARY     SALARY&lt;br /&gt;
---------- ---------- ----------- ----------&lt;br /&gt;
       122 Alison                          1&lt;br /&gt;
       105 Robert                          1&lt;br /&gt;
       117 David                           1&lt;br /&gt;
       104 Celia            58000          4&lt;br /&gt;
       116 Linda            53000          5&lt;br /&gt;
       123 James            32000          6&lt;br /&gt;
       108 Jode             29000          7&lt;br /&gt;
7 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;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==If the statement were without NULLS LAST, the values of the NVL&amp;quot;d nulls occur first==&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;
&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    empno              Number(3)  NOT NULL, -- Employee ID&lt;br /&gt;
  3    ename              VARCHAR2(10 BYTE),   -- Employee Name&lt;br /&gt;
  4    hireDate          DATE,                -- Date Employee Hired&lt;br /&gt;
  5    orig_salary        Number(8,2),         -- Orignal Salary&lt;br /&gt;
  6    curr_salary        Number(8,2),         -- Current Salary&lt;br /&gt;
  7    region             VARCHAR2(1 BYTE)     -- Region where employeed&lt;br /&gt;
  8  )&lt;br /&gt;
  9  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data for employee table&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                   orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(122,&amp;quot;Alison&amp;quot;,to_date(&amp;quot;19960321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 45000,       NULL,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(123, &amp;quot;James&amp;quot;,to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 23000,       32000,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(104,&amp;quot;Celia&amp;quot;,to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       58000,        &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(105,&amp;quot;Robert&amp;quot;,to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 31000,      NULL,        &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(116,&amp;quot;Linda&amp;quot;, to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       53000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(117,&amp;quot;David&amp;quot;, to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 78000,       NULL,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(108,&amp;quot;Jode&amp;quot;,  to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 21000,       29000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&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;
     EMPNO ENAME      HIREDATE  ORIG_SALARY CURR_SALARY R&lt;br /&gt;
---------- ---------- --------- ----------- ----------- -&lt;br /&gt;
       122 Alison     21-MAR-96       45000             E&lt;br /&gt;
       123 James      12-DEC-78       23000       32000 W&lt;br /&gt;
       104 Celia      24-OCT-82                   58000 E&lt;br /&gt;
       105 Robert     15-JAN-84       31000             W&lt;br /&gt;
       116 Linda      30-JUL-87                   53000 E&lt;br /&gt;
       117 David      31-DEC-90       78000             W&lt;br /&gt;
       108 Jode       17-SEP-96       21000       29000 E&lt;br /&gt;
7 rows selected.&lt;br /&gt;
SQL&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;&lt;br /&gt;
SQL&amp;gt; SELECT empno, ename, NVL(curr_salary,44444),&lt;br /&gt;
  2    RANK()&lt;br /&gt;
  3    OVER(ORDER BY NVL(curr_salary,44444) desc) salary&lt;br /&gt;
  4  FROM employee&lt;br /&gt;
  5  ORDER BY curr_salary desc;&lt;br /&gt;
     EMPNO ENAME      NVL(CURR_SALARY,44444)     SALARY&lt;br /&gt;
---------- ---------- ---------------------- ----------&lt;br /&gt;
       105 Robert                      44444          3&lt;br /&gt;
       117 David                       44444          3&lt;br /&gt;
       122 Alison                      44444          3&lt;br /&gt;
       104 Celia                       58000          1&lt;br /&gt;
       116 Linda                       53000          2&lt;br /&gt;
       123 James                       32000          6&lt;br /&gt;
       108 Jode                        29000          7&lt;br /&gt;
7 rows selected.&lt;br /&gt;
SQL&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; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NULLS LAST: place null value at the end==&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;
&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    empno              Number(3)  NOT NULL, -- Employee ID&lt;br /&gt;
  3    ename              VARCHAR2(10 BYTE),   -- Employee Name&lt;br /&gt;
  4    hireDate          DATE,                -- Date Employee Hired&lt;br /&gt;
  5    orig_salary        Number(8,2),         -- Orignal Salary&lt;br /&gt;
  6    curr_salary        Number(8,2),         -- Current Salary&lt;br /&gt;
  7    region             VARCHAR2(1 BYTE)     -- Region where employeed&lt;br /&gt;
  8  )&lt;br /&gt;
  9  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data for employee table&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                   orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(122,&amp;quot;Alison&amp;quot;,to_date(&amp;quot;19960321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 45000,       NULL,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(123, &amp;quot;James&amp;quot;,to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 23000,       32000,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(104,&amp;quot;Celia&amp;quot;,to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       58000,        &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(105,&amp;quot;Robert&amp;quot;,to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 31000,      NULL,        &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(116,&amp;quot;Linda&amp;quot;, to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), NULL,       53000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(117,&amp;quot;David&amp;quot;, to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 78000,       NULL,       &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)&lt;br /&gt;
  2                values(108,&amp;quot;Jode&amp;quot;,  to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 21000,       29000,       &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&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;
Hit a key to continue&lt;br /&gt;
     EMPNO ENAME      HIREDATE  ORIG_SALARY CURR_SALARY R&lt;br /&gt;
---------- ---------- --------- ----------- ----------- -&lt;br /&gt;
       122 Alison     21-MAR-96       45000             E&lt;br /&gt;
       123 James      12-DEC-78       23000       32000 W&lt;br /&gt;
       104 Celia      24-OCT-82                   58000 E&lt;br /&gt;
       105 Robert     15-JAN-84       31000             W&lt;br /&gt;
       116 Linda      30-JUL-87                   53000 E&lt;br /&gt;
       117 David      31-DEC-90       78000             W&lt;br /&gt;
       108 Jode       17-SEP-96       21000       29000 E&lt;br /&gt;
7 rows selected.&lt;br /&gt;
SQL&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; -- When nulls are present, there is an option to place nulls first or last with the analytical function.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT empno, ename, curr_salary,&lt;br /&gt;
  2    ROW_NUMBER() OVER(ORDER BY curr_salary NULLS LAST)&lt;br /&gt;
  3       salary&lt;br /&gt;
  4  FROM employee&lt;br /&gt;
  5  ORDER BY curr_salary;&lt;br /&gt;
Hit a key to continue&lt;br /&gt;
     EMPNO ENAME      CURR_SALARY     SALARY&lt;br /&gt;
---------- ---------- ----------- ----------&lt;br /&gt;
       108 Jode             29000          1&lt;br /&gt;
       123 James            32000          2&lt;br /&gt;
       116 Linda            53000          3&lt;br /&gt;
       104 Celia            58000          4&lt;br /&gt;
       117 David                           5&lt;br /&gt;
       122 Alison                          6&lt;br /&gt;
       105 Robert                          7&lt;br /&gt;
7 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;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==order by nulls last==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
   EMPNO ENAME      JOB            MGR HIREDATE       SAL     COMM DEPTNO&lt;br /&gt;
-------- ---------- --------- -------- --------- -------- -------- ------&lt;br /&gt;
 7369.00 SMITH      CLERK      7902.00 17-DEC-80   800.00              20&lt;br /&gt;
 7499.00 ALLEN      SALESMAN   7698.00 20-FEB-81  1600.00   300.00     30&lt;br /&gt;
 7521.00 WARD       SALESMAN   7698.00 22-FEB-81  1250.00   500.00&lt;br /&gt;
 7566.00 JONES      MANAGER    7839.00 02-APR-81  2975.00              20&lt;br /&gt;
 7654.00 MARTIN     SALESMAN   7698.00 28-SEP-81  1250.00  1400.00     30&lt;br /&gt;
 7698.00 BLAKE      MANAGER    7839.00 01-MAY-81  2850.00&lt;br /&gt;
 7782.00 CLARK      MANAGER    7839.00 09-JUN-81  2450.00              10&lt;br /&gt;
   EMPNO ENAME      JOB            MGR HIREDATE       SAL     COMM DEPTNO&lt;br /&gt;
-------- ---------- --------- -------- --------- -------- -------- ------&lt;br /&gt;
 7788.00 SCOTT      ANALYST    7566.00 09-DEC-82  3000.00              20&lt;br /&gt;
 7839.00 KING       PRESIDENT          17-NOV-81  5000.00              10&lt;br /&gt;
 7844.00 TURNER     SALESMAN   7698.00 08-SEP-81  1500.00      .00     30&lt;br /&gt;
 7876.00 ADAMS      CLERK      7788.00 12-JAN-83  1100.00              20&lt;br /&gt;
 7900.00 JAMES      CLERK      7698.00 03-DEC-81   950.00              30&lt;br /&gt;
&lt;br /&gt;
   EMPNO ENAME      JOB            MGR HIREDATE       SAL     COMM DEPTNO&lt;br /&gt;
-------- ---------- --------- -------- --------- -------- -------- ------&lt;br /&gt;
 7902.00 FORD       ANALYST    7566.00 03-DEC-81  3000.00              20&lt;br /&gt;
 7934.00 MILLER     CLERK      7782.00 23-JAN-82  1300.00              10&lt;br /&gt;
&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select ename, comm from emp order by comm desc nulls last&lt;br /&gt;
  2  /&lt;br /&gt;
ENAME          COMM&lt;br /&gt;
---------- --------&lt;br /&gt;
MARTIN      1400.00&lt;br /&gt;
WARD         500.00&lt;br /&gt;
ALLEN        300.00&lt;br /&gt;
TURNER          .00&lt;br /&gt;
SCOTT&lt;br /&gt;
KING&lt;br /&gt;
ADAMS&lt;br /&gt;
JAMES&lt;br /&gt;
FORD&lt;br /&gt;
MILLER&lt;br /&gt;
BLAKE&lt;br /&gt;
ENAME          COMM&lt;br /&gt;
---------- --------&lt;br /&gt;
JONES&lt;br /&gt;
SMITH&lt;br /&gt;
CLARK&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>