====== Activité : les Bases de données relationnelles - requêtes d'agrégation ====== ===== Présentation ===== Le langage SQL permet de réaliser des **requêtes de calcul** sur les données de **plusieurs enregistrement**s ou lignes. Voici les fonctions que je vais utiliser dans cette activité : ^Nom de la fonction^Calcul réalisé^ |avg() |calcul de la moyenne des valeurs| |sum() |calcul de la somme des valeurs| |max() |obtenir la plus grande valeur| |min() |obtenir la plus petite valeur| |count()|compte le nombre d'enregistrement| Dans cette activité je vais **interroger** les données sur les villes du site http://sql.sh en utilisant le langage de requêtes SQL : * le **contenu** du fichier {{:icn:villes_point_virgule.csv|}} a été mis dans une **table** appelée **icn_ville** dans une base de données MySQL : * à partir de site Web http://icn.boonum.fr, je vais pouvoir exécuter des requêtes SQL pour faire des recherches dans les données de la table **icn_ville**. ===== Les requêtes SQL d'agrégation ===== ==== La fonction count() ==== La fonction **count()** permet de **compter le nombre d'enregistrements** qui répondent à un critère de sélection. * Exemple **compter le nombre** d'enregistrements contenus dans le fichier **icn_ville**: select count(nom) as 'nombre de villes' from icn_ville; Résultat obtenu : 1 ligne(s) trouvée(s) ! ^Nombre de villes^ |36700| Le résultat de la requête serait le même si on indiquait de compter en utilisant un autre champ, dans la mesure où le champ choisi est renseigné pour toutes les enregistrements. Dans ce cas, on peut écrire **count(*)**. **Question 1 :** Ecrire la requête SQL pour compter le **nombre de villes du département de la Haute-Vienne** (87) : Résultat à obtenir : ^Nombre de villes^ |201| #Note ta requête SQL ici # # # ==== La fonction max() ==== La fonction **max()** permet de connaître la **plus grande valeur** d'un champ de la base de données. * Exemple rechercher la ville qui a l'altitude maximale la plus grande : select nom as Ville, max(alt_max) as 'altitude max' from icn_ville; Résultat obtenu : 1 ligne(s) trouvée(s) ! ^Ville ^altitude max^ |Ozan |4807| **Question 2 :** Ecrire la requête SQL pour connaître la ville qui **a le plus d'habitants** en 2012 : #Note ta requête SQL ici # # # ==== La fonction sum() ==== La fonction **sum()** permet de calculer la **somme des valeurs** de plusieurs enregistrements. * Exemple connaître le **nombre d'habitants de la Haute-Vienne** en 2012 : select dep as Département, sum(nb_hab_2012) as 'Total habitants' from icn_ville where dep=87; Résultat obtenu : 1 ligne(s) trouvée(s) ! ^Département ^Total habitants^ |87 |373500| **Question 3 :** Ecrire la requête SQL pour connaître le** nombre d'habitants de tous les départements** de France : #Note ta requête SQL ici # # # ==== La fonction avg() ==== La fonction **avg()** permet de calculer la **moyenne des valeurs** de plusieurs enregistrements. * Exemple connaître le **nombre moyen d'habitants des villes de la Haute-Vienne** en 2012 : select dep as Département, avg(nb_hab_2012) as 'Moyenne d''habitants' from icn_ville where dep=87; Résultat obtenu : 1 ligne(s) trouvée(s) ! ^Département ^Moyenne d'habitants^ |87 |1858.2090| **Question 4 :** Ecrire la requête SQL pour connaître le **nombre moyen d'habitants** des villes du **département de la Réunion** (974) : #Note ta requête SQL ici # # # ==== Les activités ... ==== [[icn:2nde:accueil|Je reviens à la liste des activités.]]