<?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%2FGROUPING_SETS</id>
		<title>Oracle PL/SQL/Analytical Functions/GROUPING SETS - История изменений</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%2FGROUPING_SETS"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Analytical_Functions/GROUPING_SETS&amp;action=history"/>
		<updated>2026-04-04T09:00:50Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Analytical_Functions/GROUPING_SETS&amp;diff=1400&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/GROUPING_SETS&amp;diff=1400&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/GROUPING_SETS&amp;diff=1401&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/GROUPING_SETS&amp;diff=1401&amp;oldid=prev"/>
				<updated>2010-05-26T09:55:53Z</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;==GROUPING SETS: get the subtotal rows==&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 employee(&lt;br /&gt;
  2    employee_id INTEGER,&lt;br /&gt;
  3    division_id CHAR(3),&lt;br /&gt;
  4    job_id CHAR(3),&lt;br /&gt;
  5    first_name VARCHAR2(10) NOT NULL,&lt;br /&gt;
  6    last_name VARCHAR2(10) NOT NULL,&lt;br /&gt;
  7    salary NUMBER(6, 0)&lt;br /&gt;
  8  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee (EMPLOYEE_ID,division_id,JOB_ID,FIRST_NAME,LAST_NAME,SALARY)&lt;br /&gt;
  2                 values(1, &amp;quot;BUS&amp;quot;,&amp;quot;PRE&amp;quot;,&amp;quot;James&amp;quot;,&amp;quot;Smith&amp;quot;,&amp;quot;800000&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employee (EMPLOYEE_ID,division_id,JOB_ID,FIRST_NAME,LAST_NAME,SALARY)&lt;br /&gt;
  2                 values(2, &amp;quot;SAL&amp;quot;,&amp;quot;MGR&amp;quot;,&amp;quot;Ron&amp;quot;,&amp;quot;Johnson&amp;quot;,&amp;quot;350000&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employee (EMPLOYEE_ID,division_id,JOB_ID,FIRST_NAME,LAST_NAME,SALARY)&lt;br /&gt;
  2                 values(3, &amp;quot;SAL&amp;quot;,&amp;quot;WOR&amp;quot;,&amp;quot;Fred&amp;quot;,&amp;quot;Hobbs&amp;quot;,&amp;quot;140000&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employee (EMPLOYEE_ID,division_id,JOB_ID,FIRST_NAME,LAST_NAME,SALARY)&lt;br /&gt;
  2                 values(4, &amp;quot;SUP&amp;quot;,&amp;quot;MGR&amp;quot;,&amp;quot;Susan&amp;quot;,&amp;quot;Jones&amp;quot;,&amp;quot;200000&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employee (EMPLOYEE_ID,division_id,JOB_ID,FIRST_NAME,LAST_NAME,SALARY)&lt;br /&gt;
  2                 values(5, &amp;quot;SAL&amp;quot;,&amp;quot;WOR&amp;quot;,&amp;quot;Rob&amp;quot;,&amp;quot;Green&amp;quot;,&amp;quot;350000&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from employee;&lt;br /&gt;
EMPLOYEE_ID DIV JOB FIRST_NAME LAST_NAME      SALARY&lt;br /&gt;
----------- --- --- ---------- ---------- ----------&lt;br /&gt;
          1 BUS PRE James      Smith          800000&lt;br /&gt;
          2 SAL MGR Ron        Johnson        350000&lt;br /&gt;
          3 SAL WOR Fred       Hobbs          140000&lt;br /&gt;
          4 SUP MGR Susan      Jones          200000&lt;br /&gt;
          5 SAL WOR Rob        Green          350000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --Using the GROUPING SETS Clause&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --GROUPING SETS: get the subtotal rows. &lt;br /&gt;
       The following example uses GROUPING SETS to get the subtotals for &lt;br /&gt;
       salaries by division_id and job_id:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT division_id, job_id, SUM(salary)&lt;br /&gt;
  2  FROM employee&lt;br /&gt;
  3  GROUP BY GROUPING SETS(division_id, job_id);&lt;br /&gt;
DIV JOB SUM(SALARY)&lt;br /&gt;
--- --- -----------&lt;br /&gt;
SUP          200000&lt;br /&gt;
SAL          840000&lt;br /&gt;
BUS          800000&lt;br /&gt;
    MGR      550000&lt;br /&gt;
    PRE      800000&lt;br /&gt;
    WOR      490000&lt;br /&gt;
6 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; 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;
==Use GROUPING SETS and RANK() to get just the sales amount subtotal rankings==&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 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    ,16434.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(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    ,10032.64);&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   16434.82&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   10032.64&lt;br /&gt;
25 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --Use GROUPING SETS and RANK() to get just the sales amount subtotal rankings&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT&lt;br /&gt;
  2   prd_type_id, emp_id, SUM(amount),&lt;br /&gt;
  3   RANK() OVER (ORDER BY SUM(amount) DESC) AS rank&lt;br /&gt;
  4  FROM all_sales&lt;br /&gt;
  5  GROUP BY GROUPING SETS(prd_type_id, emp_id)&lt;br /&gt;
  6  ORDER BY prd_type_id, emp_id;&lt;br /&gt;
PRD_TYPE_ID     EMP_ID SUM(AMOUNT)       RANK&lt;br /&gt;
----------- ---------- ----------- ----------&lt;br /&gt;
          1               227276.5          2&lt;br /&gt;
          2              223927.08          3&lt;br /&gt;
                    21   434568.74          1&lt;br /&gt;
                    22    16634.84          4&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>