Analyse de données
via SQL
Transformez les données
en informations
                                  Alban OUEDRAOGO
                          Zindi Country Ambassador – Burkina Faso
               Alban OUEDRAOGO
❖ Ingénieur en science de données
❖ Jeune    Expert-Formateur      en    Informatique     et
   Intelligence artificielle du CNJ-BF
❖ Responsable du service support informatique
   chez Coris Bank International Burkina
❖ Ambassadeur Zindi pour le Burkina Faso
❖ Formateur Analyse de données
❖ Développeur intelligence artificielle
          wende.ouedraogo@gmail.com *** (226) 62149373 *** https://www.linkedin.com/in/alban-wende-ouedraogo/
Plan
Définition
Types d’analyse
Analyse descriptive
Analyse de données avec SQL
  J1: Bases
  J2: Intermédiaire
  J3: Avancé
Généralités:
 Analyse de
  données
Analyse de données
 Définition:
L'analyse des données est une technique
utilisée pour traiter les données, trouver des
modèles et des tendances cachées et
interpréter les données.
Types d’analyse
• Analyse descriptive
• Analyse diagnostique
• Analyse prédictive
• Analyse prescriptive
Types d’analyse: Analyse descriptive
Que s’est-il passé ?
Agrégation
Comparaison
Classement
Types d’analyse: Analyse diagnostique
Pourquoi cela s’est-il passé ?
Hypothèses
Corrélation
Causalité
Types d’analyse: Analyse prédictive
Que va-t-il se passer ?
Extrapolation des tendances
Modélisation
Algorithmes: Machine Learning
Types d’analyse: Analyse prescriptive
Que faire pour que cela se passe ?
  Evaluation et Comparaison
                     L’Oracle, Matrix
 des scénarios
  Proposition d’actions
 implémentables
  SQL
Les bases
                                               INTRODUCTION
   SQL
Le SQL est un langage standard pour accéder aux bases de données et les
manipuler.
Qu’est-ce que le SQL?
SQL signifie Structured Query Language
SQL permet :
Exécuter les requêtes sur une base de données
Extraire - Insérer – Modifier – Supprimer des données
Créer des bases de données – tables – procédures stockées – fonctions –
vues
Gérer les droits des utilisateurs – leur allouer des ressources
                                                                          1
                                                INTRODUCTION
  RDBMS
RDBMS signifie Relational Database Management System (SGBDR en
français)
Le SGBDR est la base du SQL et pour tous les SGBD tels que MS SQL
Server, IBM DB2, Oracle, MySQL et MS Access, etc.
Les données dans un SGBDR est stockée dans des objets de base de
données appelés tables.
Une table est une collection de données disposées en lignes et colonnes.
                                                                           1
                                               Les bases du SQL
Table
Une base de données contient une ou plusieurs tables. Chaque table est identifiée par un nom (ex: Clients ou
Commandes). Les tables contiennent des enregistrements avec des données.
P_Id             Nom               Prénom            Adresse           Ville
1                SANKARA           Thomas            Daghnoen          Ouagadougou
2                DAMIBA            Paul              Lomé 2000         Lomé
3                SANOU             Didier            Nasso             Bobo Dioulasso
La table ci-dessus contient 3 enregistrements (1 pour chaque personne) et 5 colonnes (P_Id, Nom,
Prénom, Adresse, and Ville)
                                                                                                               1
                                               Les bases du SQL
Requêtes SQL
Nota Bene
- sensible à la casse ? Non
SELECT * FROM Persons 🡸 🡸 select * from persons
- (;) nécessaire ? Selon les SGBD
SQL DML & DDL
SQL peut-être divisé en 2 parties : Le Data Manipulation Language (DML) et le Data Definition Language (DDL).
DML : SELECT – UPDATE – DELETE – INSERT INTO
DLL: CREATE – ALTER – DROP
                                                                                                                1
                                               Les bases du SQL
SELECT
SELECT colonnes(s) FROM table(s) Ou SELECT * FROM table
Sélectionner toutes les colonnes: SELECT * FROM Personnes
Si nous voulons sélectionner les colonnes “Nom” et “Prénom” dans la table Personne, la requête serait:
SELECT Nom, Prénom FROM personnes
P_Id            Nom              Prénom          Adresse          Ville                 Nom              Prénom
1               SANKARA          Thomas          Daghnoen         Ouagadougou           SANKARA          Thomas
2               DAMIBA           Raoul           Lomé 2000        Lomé              🡺   DAMIBA           Raoul
3               NEBIE            Didier          Nasso            Bobo Dioulasso        NEBIE            Didier
                                                                                                                  1
                                                Les bases du SQL
SELECT (opération)
Nous pouvons réaliser des operations à travers l’instruction de sélection
SELECT operation FROM table
Ex: SELECT 2*1010+4, annee_naissance, 2024-annee_naissance, taille_cm/100 FROM Personnes
2*1010+4               annee_naissance            2024-annee_naissance      taille_cm/100
2024                   1990                       34                        1,83
2024                   2005                       19                        1,72
2024                   1960                       64                        1,79
                                                                                            1
                                              Les bases du SQL
ALIAS
SELECT colonnes(s) AS alias_col FROM table(s) AS alias_tab
Ex: SELECT 2*1010+4 as annee, annee_naissance, 2024-annee_naissance AS age, taille_cm/100 AS
taille_metres FROM Personnes
annee                 annee_naissance           age                         taille_metres
2024                  1990                      34                          1,83
2024                  2005                      19                          1,72
                                                                              🡺
2024                  1960                      64                          1,79
                                                                                               1
                                                Intermédiaire
CASE WHEN
La commande “CASE … WHEN …” permet d’utiliser des conditions de type “si / sinon” similaire à un
langage de programmation pour retourner un résultat disponible entre plusieurs possibilités.
SELECT CASE
  WHEN condition1 THEN resultat1
  WHEN condition2 THEN resultat2
  WHEN conditionN THEN resultatN
  ELSE resultat_defaut
END
FROM table
                                                                                                   1
                                              Intermédiaire
CASE WHEN
Ex: Rélevé de compte bancaire
SELECT date_comptable, libelle,
(CASE WHEN sens='D' THEN montant ELSE null END) debit,
(CASE WHEN sens='C' THEN montant ELSE null END) credit,
solde
FROM transactions
                                 Date_comptable   Libelle           Débit     Crédit      Solde
                                 25/01/2024       Salaire Janvier             5 000 000   25 000 000
                                 01/02/2024       Loyer             150 000               24 850 000
                                 02/02/2024       Epargne           500 000               24 350 000
                                                                                                       1
                                                 Les bases du SQL
WHERE
                                                                        Operateur   Description
SELECT colonnes(s) FROM table WHERE colonne OPERATEUR valeur            =           égale
Sélectionner les personnes s’appellant SANKARA et vivant à Ouagadougou : <>         différent de
                                                                        >           plus grand que
SELECT * FROM Personnes
WHERE ville=‘Ouagadougou’ AND nom=‘SANKARA’                             <           plus petit que
P_Id          Nom           Prénom         Adresse     Ville            >=          plus grand ou égale
1             SANKARA       Thomas         Daghnoen    Ouagadougou      <=          plus petit ou égale
                                                                        BETWEEN     entre un intervalle de
Les opérateurs AND & OR : plusieurs conditions                                      valeurs
AND: la 1ère et la 2nde condition sont vraies                           LIKE        correspond à un motif
OR: la 1ère ou la 2nde condition est vraie                              IN          parmi une liste de valeurs
                                                                        NOT         négation
                                                                                                             1
                                                             Les bases du SQL
ORDER BY
Sert à trier les résultats selon une ou plusieurs colonnes
SELECT colonnes(s) FROM table ORDER BY colonne ASC|DESC
Trier les personnes selon la ville:
SELECT * FROM Personnes ORDER BY ville ASC;
P_Id                Nom                 Prénom                Adresse     Ville
3                   NEBIE               Didier                Nasso       Bobo Dioulasso
2                   DAMIBA              Raoul                 Lomé 2000   Lomé
Les opérateurs AND & OR : plusieurs conditions
1
AND: la 1ère et laSANKARA         Thomas
                   2nde condition sont vraies                 Daghnoen    Ouagadougou
                                                                                           1
                                                           Les bases du SQL
LIMIT
Sert à spécifier le nombre d’enregistrements à retourner
SELECT colonnes(s) FROM table LIMIT nombre
Sélectionner les 2 personnes :
SELECT * FROM Personnes LIMIT 2;
P_Id               Nom                 Prénom               Adresse     Ville
1                  SANKARA             Thomas               Daghnoen    Ouagadougou
2                  DAMIBA              Raoul                Lomé 2000   Lomé
Les opérateurs AND & OR : plusieurs conditions
                                                                                      1
Pause Questions
                  1
Pause Questions
                  1
                                           Workshop
Les bases du SQL (cliquer voir BD workshop)
1.   Sélectionner tous les produits
2.   Sélectionner les villes de tous les clients
3.   Sélectionner tous les clients habitant la ville ‘sao paulo’
4.   Sélectionner les statuts distincts des commandes
5.   Sélectionner toutes les commandes qui ont été livrées
6.   Sélectionner toutes les commandes qui ont été livrées dans les délais (date de
     livraison chez le client antérieure à la date de livraison prévue
7. Calculer le volume physique de chaque produit, renommer le calcul en "volume"
8. Classer les produits par ordre de poids décroissant
9. Limiter le résultat de la précédente requête à 5 enregistrements
                                                                                      1
     SQL
Intermédiaire
                                                          Intermédiaire
Les jointures
Sert à combiner les données de 2 ou plusieurs tables basées sur une relation entre certaines colonnes dans ces tables
SELECT colonnes(s)
FROM table1 JOINTURE table2
ON table1.colonne=table2.colonne
                                                                                                                        1
                Intermédiaire
Les jointures
                                1
Intermédiaire
                1
                                                          Intermédiaire
Les fonctions d’aggrégation
Les fonctions d’aggrégation servent à retourner une valeur calculée à partir d’une colonne
Fonction                                            Résultats
AVG()                                              la valeur moyenne
COUNT()                                            le nombre d’enregistrements
FIRST()                                            la première valeur
LAST()                                             la dernière valeur
MAX()                                              la valeur maximale
MIN()                                              la valeur minimale
SUM()                                              the somme
                                                                                             1
                                                           Intermédiaire
L’instruction GROUP BY
Les fonctions d’aggrégations nécessitent souvent l’instruction GROUP BY
Elle est utilisée en conjonction avec les fonctions d’aggrégation afin de grouper les résultats suivant une ou plusieurs
colonnes
SELECT colonne, fonction_aggregation(colonne)
FROM table
GROUP BY colonne
Ex: Sélectionner le nombre d’habitants par ville
SELECT ville, count(id) AS nombre
FROM population
GROUP BY ville
                                                                                                                           1
                                                       Intermédiaire
L’instruction HAVING
HAVING permet de filtrer un résultat obtenu par l’instruction GROUP BY selon une condition
SELECT colonne, fonction_aggregation(colonne)
FROM table
GROUP BY colonne
HAVING condition
Ex: Sélectionner les villes ayant au moins 1 million de citoyens adultes
SELECT ville, count(id) AS nombre
FROM population
WHERE age>=18
GROUP BY ville
HAVING count(id)>=1 000 000
                                                                                             1
                                Intermédiaire
L’exécution d’une requête SQL
                                                1
Pause Questions
                  1
Pause Questions
                  1
                                        Workshop
Intermédiaire (cliquer voir BD workshop)
1. Calculer le poids moyen et la hauteur moyenne par catégorie de produits
     (utiliser GROUP BY)
2.   Quel est la catégorie de produit ayant le plus gros volume ?
3.   Pour chaque commande, afficher en plus le mode de paiement
     (payment_type) (jointure)
4.   Quel est l’article le plus vendu ?
5.   Quelle est la commande comportant le plus d’articles ?
6.   Quelles sont les commandes ayant le plus d’articles ?
7.   Calculer le chiffre d’affaires par vendeur (4 tables à joindre)
8.   Quartier libre
                                                                             1
 SQL
Avancé
                                                       Avancé
Les sous-requêtes
Les sous-requêtes permettent d’utiliser le résultat d’une requête dans une requête plus grande
SELECT colonne, fonction_aggregation(colonne)
FROM (sous-requête)
WHERE colonne operateur sous-requête
Ex: Sélectionner les villes ayant au moins 1 million de citoyens adultes
SELECT ville, nombre
FROM (SELECT ville, count(id) AS nombre FROM population WHERE age >= 18 GROUP BY ville)
WHERE nombre>=1 000 000
                                                                                                 1
                                                       Avancé
Les Common Table Expression (CTE)
Les CTE permettent d’avoir le même résultat que les sous-requêtes mais ajoutent de la lisibilité
WITH table_cte AS (requete_sql),
SELECT colonne
FROM table_cte
Ex: Sélectionner les villes ayant au moins 1 million de citoyens adultes
CTE Simple                                                      CTE Imbriquées
WITH villes_adultes AS (                                        WITH adultes AS (
            SELECT ville, count(id) AS nombre                               SELECT *
            FROM population                                                 FROM population
            WHERE age >= 18 GROUP BY ville),                                WHERE age >= 18),
SELECT ville, nombre                                            villes AS (
FROM villes_adultes                                                         SELECT ville, count(id) AS nombre
WHERE nombre>1 000 000                                                      FROM adultes
                                                                            GROUP BY ville),
                                                                SELECT ville, nombre
                                                                FROM villes
                                                                WHERE nombre>1 000 000                          1
                                                     Avancé
Les Window Functions
Les Window Functions sont similaires à l'agrégation effectuée dans la clause GROUP BY. Cependant, les lignes ne
sont pas regroupées en une seule ligne, chaque ligne conserve son identité distincte. Autrement dit, une fonction
de fenêtre peut renvoyer une valeur unique pour chaque ligne.
                                                                                                                    1
                                                              Avancé
La syntaxe des Window Functions
Comment utilise-t-on les fonctions de fenêtrage ? La clause OVER() définit la fenêtre sur laquelle la fonction doit s'appliquer. Les
arguments optionnels suivants sont acceptés :
•  PARTITION BY pour définir la méthode de partitionnement. Si cette clause n'est pas mentionnée, la table entière est
   considérée comme unique partition.
•  ORDER BY pour définir l'ordre à l'intérieur d'une partition. Si cette clause n'est pas mentionnée, aucun tri n'est effectué dans
   la fenêtre.
Les fonctions fenêtrées peuvent être de plusieurs natures. Voici ci-dessous quelques exemples de fonctions pour chaque type.
Cette liste n'est pas exhaustive et peut varier d'un SGBD à l'autre. Vous devrez donc vous référencer à la documentation de votre
SGBD.
•   Fonctions d'agrégation (SUM, MAX, COUNT, etc.)
•   Fonctions de rang (RANK, DENSE_RANK, ROW_NUMBER, CUME_DIST, etc.)
•   Fonctions de valeur (FIRST_VALUE, LAG, LEAD, etc.)
                                                                                                                                       1
Pause Questions
                  1
Pause Questions
                  1
Plus loin
                                       Plus loin
La fonction PIVOT
Les fonctions scalaires
Les fonctions de manipulation des dates et heures
Les index
Créer ses fonctions et procedures stockées
Table dual
                                                    1
Workshop
                                        Workshop
Dataset
Brazilian E-Commerce Public Dataset by Olist on Kaggle:
https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce
SGBDR: mySQL
Lien de connexion: https://auth-
db977.hstgr.io/index.php?route=/sql&db=u145442528_zindi_sql
Identifiant: u145442528_zindi_sql
Mot de passe: b+7-BF5FV6wF_u*
NB: les accès seront révoqués à partir du 3 Mars 2024
                                                              1
         Workshop
Schéma
                    1
                              Bibliographie
▪ SQL BASICS AND ADVANCED by ATUL KUMAR
▪ https://towardsdatascience.com/take-your-sql-from-good-to-great-
  part-3-687d797d1ede
▪ https://www.edureka.co/blog/sql-functions
▪ https://learnsql.com/blog/what-is-common-table-expression/
▪ https://www.freecodecamp.org/news/window-functions-in-sql/
                                                                     1
Plus de questions ?
wende.ouedraogo@gmail.com
@alban-wende-ouedraogo
+226 62149373 / 77177421