Reporting on a Sum
SQL> CREATE TABLE all_sales ( 2 year INTEGER, 3 month INTEGER, 4 prd_type_id INTEGER, 5 emp_id INTEGER , 6 amount NUMBER(8, 2) 7 ); Table created. SQL> SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,1 ,1 ,21 ,16034.84); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,2 ,1 ,21 ,15644.65); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,3 ,2 ,21 ,20167.83); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,4 ,2 ,21 ,25056.45); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,5 ,2 ,21 ,NULL); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,6 ,1 ,21 ,15564.66); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,7 ,1 ,21 ,15644.65); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,8 ,1 ,21 ,16434.82); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,9 ,1 ,21 ,19654.57); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,10 ,1 ,21 ,21764.19); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,11 ,1 ,21 ,13026.73); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2006,12 ,2 ,21 ,10034.64); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,1 ,2 ,22 ,16634.84); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,1 ,2 ,21 ,26034.84); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,2 ,1 ,21 ,12644.65); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,3 ,1 ,21 ,NULL); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,4 ,1 ,21 ,25026.45); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,5 ,1 ,21 ,17212.66); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,6 ,1 ,21 ,15564.26); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,7 ,2 ,21 ,62654.82); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,8 ,2 ,21 ,26434.82); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,9 ,2 ,21 ,15644.65); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,10 ,2 ,21 ,21264.19); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,11 ,1 ,21 ,13026.73); 1 row created. SQL> insert into all_sales (YEAR,MONTH,PRD_TYPE_ID,EMP_ID,AMOUNT) 2 values(2005,12 ,1 ,21 ,10032.64); 1 row created. SQL> SQL> select * from all_sales; YEAR MONTH PRD_TYPE_ID EMP_ID AMOUNT ---------- ---------- ----------- ---------- ---------- 2006 1 1 21 16034.84 2006 2 1 21 15644.65 2006 3 2 21 20167.83 2006 4 2 21 25056.45 2006 5 2 21 2006 6 1 21 15564.66 2006 7 1 21 15644.65 2006 8 1 21 16434.82 2006 9 1 21 19654.57 2006 10 1 21 21764.19 2006 11 1 21 13026.73 2006 12 2 21 10034.64 2005 1 2 22 16634.84 2005 1 2 21 26034.84 2005 2 1 21 12644.65 2005 3 1 21 2005 4 1 21 25026.45 2005 5 1 21 17212.66 2005 6 1 21 15564.26 2005 7 2 21 62654.82 2005 8 2 21 26434.82 2005 9 2 21 15644.65 2005 10 2 21 21264.19 2005 11 1 21 13026.73 2005 12 1 21 10032.64 25 rows selected. SQL> SQL> SQL> SQL> --Reporting on a Sum SQL> SQL> --The total sum of all sales for all three months (labeled as total_month_amount) SQL> SQL> --The total sum of all sales for all product types (labeled as total_product_type_amount) SQL> SQL> SELECT 2 month, prd_type_id, 3 SUM(SUM(amount)) OVER (PARTITION BY month) 4 AS total_month_amount, 5 SUM(SUM(amount)) OVER (PARTITION BY prd_type_id) 6 AS total_product_type_amount 7 FROM all_sales 8 WHERE month <= 3 9 GROUP BY month, prd_type_id 10 ORDER BY month, prd_type_id; MONTH PRD_TYPE_ID TOTAL_MONTH_AMOUNT TOTAL_PRODUCT_TYPE_AMOUNT ---------- ----------- ------------------ ------------------------- 1 1 58704.52 44324.14 1 2 58704.52 62837.51 2 1 28289.3 44324.14 3 1 20167.83 44324.14 3 2 20167.83 62837.51 SQL> SQL> SQL> drop table all_sales; Table dropped. SQL> SQL>