Cours SQL ORACLE – 04 : Les fonctions d’agrégation

Cours SQL ORACLE – 04 : Les fonctions d'agrégation

Les fonctions d’agrégation sont des fonctions utilisées dans les requêtes SQL et qui retournent toujours un seul résultat. Par exemple, compter les lignes d’une table, retourner le MAX des valeurs d’une colonne d’une table, etc.

 

  • COUNT :

La fonction COUNT sert à compter les lignes d’une table ou d’une requête.

SELECT COUNT(*) FROM EMP ;

COUNT(*)
----------------------
14

Cette fonction ne peut pas retourner une valeur nulle même si la requête ne retourne aucun résultat :



SELECT COUNT(*) FROM EMP WHERE 1 = 2 ;

COUNT(*)
----------------------
0

Nous pouvons aussi utiliser la fonction COUNT pour compter le nombre d’enregistrement non vide dans une colonne. Pour cela :

SELECT COUNT(COMM) FROM EMP ;

COUNT(COMM)
----------------------
4

Nous pouvons aussi sélectionner le nombre d’enregistrement distinct dans une colonne en utilisant :

SELECT COUNT(DISTINCT JOB) FROM EMP ;

COUNT(DISTINCT JOB)
----------------------
5

Nous utilisons DISTINCT pour ne comptabiliser (ou ne sélectionner, dans le cas d’un SELECT normal) qu’une seule fois les enregistrements en double.

 

  • MAX :

La fonction MAX retourne la valeur la plus grande d’une colonne d’une table ou d’une sélection

SELECT MAX(SAL) FROM EMP ;

MAX(SAL)
----------------------
5000

Il faut savoir que les colonnes nulles sont ignorées dans cette fonction. De plus si jamais nous exécutons cette fonction sur une colonne dont toutes ses valeurs sont nulles alors le résultat est nul aussi

SELECT MAX(COMM) FROM EMP WHERE COMM IS NULL ;

MAX(COMM)
----------------------




  • MIN :

La fonction MIN retourne la valeur la plus petite d’une colonne d’une table ou d’une sélection

SELECT MIN(SAL) FROM EMP ;

MIN(SAL)
----------------------
800

Comme pour la fonction MAX, les colonnes nulles sont ignorées dans cette fonction. De plus si jamais nous exécutons cette fonction sur une colonne dont toutes ses valeurs sont nulles alors le résultat est nul aussi

SELECT MIN(COMM) FROM EMP WHERE COMM IS NULL ;

MIN(COMM)
----------------------

 

  • SUM

Retourne la somme des valeurs d’une colonne d’une table ou d’une sélection. Cette fonction ne peut être utilisée qu’avec des champs numériques

SELECT SUM(SAL) FROM EMP ;

SUM(SAL)
----------------------
29025

Les valeurs nulles sont considéré comme des 0 par cette fonction et la sommes des valeurs nulles est nul

SELECT SUM(COMM) FROM EMP WHERE COMM IS NULL ;

SUM(COMM)
----------------------
 

 

  • AVG:

La fonction AVG renvoie la moyenne de toutes les valeurs d’une colonne. AVG ne peut être utilisé qu’avec des champs numériques

SELECT AVG(SAL) FROM EMP ;

AVG(SAL)
----------------------
2073,214285714285714285714285714285714286

Il faut savoir qu’on ne peut jamais utiliser une fonction d’agrégation dans une requête SELECT avec d’autre colonne de la table. Par contre, nous pouvons utiliser dans le même SELECT plusieurs fonctions d’agrégat. Si nous exécutons cette requête

SELECT COUNT(*), MAX(SAL), MIN(SAL), SUM(SAL), AVG(SAL) FROM EMP ;

COUNT(*) MAX(SAL) MIN(SAL) SUM(SAL) AVG(SAL)
-------- -------- -------- -------- ----------
14       5000     800      29025    2073,214285714285714285714285714285714286

Exécutons maintenant la requête ci-dessous

SELECT SAL, COMM, COUNT(*) FROM EMP ;
 

Erreur commençant à la ligne 1 de la commande :

SELECT SAL, COMM, COUNT(*) FROM EMP

Erreur à la ligne de commande : 1, colonne : 7

Rapport d'erreur :

Erreur SQL : ORA-00937: la fonction de groupe ne porte pas sur un groupe simple
00937. 00000 - "not a single-group group function"
*Cause:
*Action:

Nous ne pouvons exécuter ce genre de requête que si on utilise GROUP BY.

Nous verrons dans le prochain cours la requête GROUP BY en détails.

Laisser un commentaire