Vous pouvez utiliser l'extension CUBE pour produire des valeurs sous-total en l'utilisant avec la fonction
SUM(). L'opération CUBE groupe les lignes sélectionnées sur la base des valeurs de toutes les combinaisons possibles des expressions dans la spécification, et renvoie une seule
ligne d'informations succinctes sur chaque groupe. Vous pouvez utiliser l'opération CUBE pour produire des valeurs des données
croisées.
Les fonctions d'agrégations telles que SUM, COUNT, AVG, MIN, MAX peuvent être utilisées.
Le CUBE s’exécute indépendamment de toute hiérarchie des métadonnées dans votre système. Leurs calculs sont basés entièrement
sur les colonnes spécifiées dans l'instruction SELECT dans lequel ils apparaissent.
CUBE ne restreint pas la capacité des colonnes de la clause GROUP
BY.
Ici, nous allons comparer le résultat de 2 requêtes, l'une avec un GROUP BY et l'autre avec un GROUP BY CUBE.
SELECT DEPTNO, JOB, SUM (SAL)
FROM SCOTT.EMP
GROUP BY (DEPTNO, JOB)
ORDER BY DEPTNO;
|
| DEPTNO | JOB | SUM (SAL) |
| 10 | CLERK | 1300 |
| 10 | MANAGER | 2450 |
| 10 | PRESIDENT | 5000 |
| 20 | ANALYST | 6000 |
| 20 | CLERK | 1900 |
| 20 | MANAGER | 2975 |
| 30 | CLERK | 950 |
| 30 | MANAGER | 2850 |
| 30 | SALESMAN | 5600 |
SELECT DEPTNO, JOB, SUM (SAL)
FROM SCOTT.EMP
GROUP BY CUBE (DEPTNO, JOB)
ORDER BY DEPTNO ASC;
|
| DEPTNO | JOB | SUM (SAL) |
| 10 | CLERK | 1300 |
| 10 | MANAGER | 2450 |
| 10 | PRESIDENT | 5000 |
| 10 | 8750 | |
| 20 | ANALYST | 6000 |
| 20 | CLERK | 1900 |
| 20 | MANAGER | 2975 |
| 20 | 10875 | |
| 30 | CLERK | 950 |
| 30 | MANAGER | 2850 |
| 30 | SALESMAN | 5600 |
| 30 | 9400 | |
| ANALYST | 6000 | |
| CLERK | 4150 | |
| MANAGER | 8275 | |
| PRESIDENT | 5000 | |
| SALESMAN | 5600 | |
| 29025 |
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Update conditionnées de Tables avec MERGE INTO • Oracle SQL GROUP BY ROLLUP |