Magazine Informatique

Les fonctions (2eme partie)

Publié le 13 septembre 2012 par Lolokai @lolokai

Introduction

Dans l’article précèdent nous avons vu un des deux types de fonctions fournit par Oracle, à savoir les fonctions de ligne (single row). Aujourd’hui nous allons voir ensemble le deuxième et dernier type : les fonctions de groupe (multiple row ou encore fonction d’agrégation).

Les fonctions de groupe

Contrairement aux fonctions de ligne, les fonctions de groupe n’agissent pas sur une seule ligne. En effet, les fonctions que nous allons voir par la suite agissent sur la totalité ou une partie d’une colonne.

Voici une liste de fonctions de groupe que j’ai trouvé intéressant de présenter :

avg(expr) retourner la moyenne des valeurs de la colonne

count(expr) retourner le nombre de ligne non nul pour la colonne donnée

max(expr) retourner la valeur la plus élevée de la colonne

min(expr) retourner la valeur la plus  petite de la colonne

sum(expr) retourner le total (la somme) des valeurs de la colonne

variance(expr) retourner la variance des valeurs de la colonne

stdev(expr) retourner l’ecart type statistique des valeurs de la colonne

Voici trois  petits exemples d’utilisation de ces fonctions :

SELECT * FROM C1 ;

Les fonctions (2eme partie)

SELECT avg(age) FROM C1 ;

Les fonctions (2eme partie)

SELECT sum(age) FROM C1 ;

Les fonctions (2eme partie)

SELECT count(age) FROM C1 ;

Les fonctions (2eme partie)

Utilisation des fonctions de groupe avec des colonnes

Vous remarquerez que dans mes exemples j’ai utilisé que des fonctions de groupe et pas de colonne.Vous pouvez essayer, vous aurez une erreur :

SELECT lastname , SUM(age) FROM C1 ;

Les fonctions (2eme partie)

En soit c’est assez logique, votre « requête » essaie de retourner tous les prénoms de la table C1 alors que la fonction SUM(age) lui doit retourner qu’une seule valeur…

Pour pouvoir utiliser la colonne, on doit rajouter la clause : GROUP BY (nom_colonne…) , cette clause doit être mis après la clause WHERE , si elle existe.

Exemple :

SELECT lastname , SUM(age) FROM C1  GROUP BY(lastname) ;

Ici la requête va retourner pour chaque lastname identique la somme d’âge.

Dans notre cas, on n’a pas deux personnes avec le même nom , donc logiquement en SUM(age) on retrouve l’âge de chaque individu.

Les fonctions (2eme partie)

Si par exemple, il y avais un deuxième ‘Assoumani’ ayant par exemple 21 ans en SUM(age) pour le lastname ‘Assoumani’ on aurait eu 41

:)
.

Les restrictions avec les fonctions de groupe

Nous avons vu dans un des articles précèdent que pour restreindre nos données nous devions utiliser la clause WHERE. Cette clause ne marche pas avec les fonctions de groupe (ce serais trop beau :p ).

Supposons que l’on veuille avoir les  noms de famille et sum(age)  avec sum(age) < 68.

Pour ce qui aimerait tenter ceci :

SELECT lastname, avg(age) FROM C1 WHERE sum(age) < 68 GROUP BY lastname;

Voilà ce qui vous attend:

Les fonctions (2eme partie)

En fait l’equivalent de la clause WHERE avec les fonctions de groupe  est la clause HAVING. Donc pour corriger notre erreur  , nous allons remplacer WHERE par HAVING:

SELECT lastname, avg(age) FROM C1 HAVING sum(age) < 68 GROUP BY lastname;

Les fonctions (2eme partie)

Conclusion

Voilà

:)
, nous avons vu à travers cet article ce que sont les fonctions de groupe et aussi comment les utiliser.  La partie sur les fonctions est maintenant complétée.

Dans le prochain article nous parlerons sur les Jointures.

Si vous avez des questions, suggéstions sur cet article ou même sur les précédente : laissez un commentaire, je réponds assez rapidement.Said ASSOUMANI


Retour à La Une de Logo Paperblog

A propos de l’auteur


Lolokai 189 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte

Dossier Paperblog