Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
9 avril 2012 1 09 /04 /avril /2012 00:40

 

SQL SUM.

Comment faire une somme en regroupant des lignes avec la FONCTION SUM.
Comment calculer une somme dans une table Oracle avec SELECT SUM.

 

Fonction SQL SUM.

La fonction de groupe ( Fonction d'agrégation ) SQL SUM regroupe des lignes et retourne une somme unique de toutes les expressions numériques d'une colonne de table dans Oracle.

 

SYNTAXE FONCTION SUM.

 
 SUM([ DISTINCT | ALL ] expr)  

La fonction SUM prend comme argument un type de données numérique ou n'importe quel type non numérique qui peut être implicitement converti en un type numérique.
La fonction SUM retournera le même type de données que le type de données numérique de l'argument.

La fonction d'agrégation SUM ignorent les valeurs NULL présentes dans le jeu de données sur lequel porte leur calcul. La fonction SUM ne traite pas les valeurs NULL, ainsi si les seules valeurs évaluées sont NULL alors la fonction SUM retournera NULL.

Lorsque ALL est spécifiée, toutes le valeurs non NULL sont appliquées à la fonction de groupe SUM.
Lorsque DISTINCT est spécifiée, seul une des valeurs non NULL est appliquée à la fonction de regroupement SUM.

LES VALEURS NULL AVEC LES OPERATEURS ARITHMETIQUES.

 
  SQL> SELECT 1+2+0+3 FROM dual; 1+2+0+3 ---------- 6 SQL> SELECT 1+2+NULL+3 FROM dual; 1+2+NULL+3 ---------- SQL>  

On constate ici, qu'une expression NULL utilisée avec les opérateurs arithmétiques retournera NULL.

 

FONCTION DE REGROUPEMENT SUM.

 
 TABLE DEMO UTILISE POUR SQL SUM SQL> SELECT * FROM SCOTT.EMP; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------------------------------------------------------------------------- 7369 SMITH CLERK 7902 800.5 30 7499 ALLEN SALESMAN 20/02/1981 1600 300 30 7521 WARD SALESMAN 7698 22/02/1981 1250 500.56 30 7566 JONES MANAGER 7839 02/04/1981 2975 30 7654 MARTIN SALESMAN 7698 28/09/1981 1250 1400 40 

 

FONCTION ORACLE SUM SANS REGROUPEMENT.

 
 SQL> SELECT SUM(SAL), SUM(DISTINCT SAL), SUM(COMM), SUM(DISTINCT COMM) FROM SCOTT.EMP; SUM(SAL) SUM(DISTINCTSAL) SUM(COMM) SUM(DISTINCTCOMM) ---------- ---------------- ---------- ----------------- 7875,5 6625,5 2230,56 2230,56 SQL> 

On voit ici que la fonction sql sum retourne la somme totale des salaires avec l'option par défaut ALL, et une somme totale des salaires distincts avec l'utilisation de DISTINCT. Le salaire 1250 est sommé une seule fois.

 

FONCTION ORACLE SUM AVEC CLAUSE GROUP BY.

 
 SQL> COL JOB FORMAT A10 SQL> SELECT JOB, SUM(SAL), SUM(DISTINCT SAL), SUM(COMM), SUM(DISTINCT COMM) FROM SCOTT.EMP GROUP BY (JOB); JOB SUM(SAL) SUM(DISTINCTSAL) SUM(COMM) SUM(DISTINCTCOMM) --------------- ---------- ---------------- ---------- ----------------- CLERK 800,5 800,5 MANAGER 2975 2975 30 30 SALESMAN 4100 2850 2200,56 2200,56 SQL> 

Pour chaque groupe indiqué dans la clause group by (ici JOB) la fonction SUM retourne la somme des expressions numériques. Pour le regroupement de données explicite, il faut utiliser la clause GROUP BY.
La clause GROUP BY liste les colonnes de regroupement, ici il se fait sur le champ JOB. Il doit y avoir une cohérence entre les colonnes du SELECT SUM et du GROUP BY.

 

FONCTION ORACLE SUM AVEC CONDITION HAVING.

La condition lors d’un regroupement se fait en utilisant la clause HAVING, elle permet de poser des conditions sur chaque regroupement SUM.

 
 SQL> COL JOB FORMAT A10 SQL> SELECT JOB, SUM(SAL), SUM(DISTINCT SAL), SUM(COMM), SUM(DISTINCT COMM) FROM SCOTT.EMP GROUP BY (JOB) HAVING SUM(SAL)> SUM(DISTINCT SAL); JOB SUM(SAL) SUM(DISTINCTSAL) SUM(COMM) SUM(DISTINCTCOMM) --------------- ---------- ---------------- ---------- ----------------- SALESMAN 4100 2850 2200,56 2200,56 SQL> 

 

 

Haut de Page www.dba-ora.fr

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Fonction SQL MIN
• Fonction SQL MAX
• Fonction SQL COUNT
• Instruction SQL GROUP BY
• SQL SELECT FROM WHERE

Partager cet article

Repost 0
Published by Daniel Roesch - dans FUNCTIONS - SQL
commenter cet article

commentaires