Transformer des données pour l'analyse

Six transformations d'une table écrites en SQL : filtrer, dériver une colonne, agréger à un grain, joindre, pivoter et découper en tranches ; leur ordre et le nombre de lignes de chacune.

  • 24 cartes
  • 6 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • Transformation de données : de quoi s'agit-il ?

    Voir la réponse

    Opération qui fabrique, à partir d'une table, une autre table plus proche de la question posée : on filtre, calcule, regroupe, joint, pivote.

    L'ordre compte : filtrer les commandes annulées avant d'agréger donne un autre total que de les agréger puis de filtrer.

  • Avec les six commandes ci-dessous, quelle ligne figure dans le résultat de la requête ?

    ```sql
    -- cmd(id, region, mois, montant, statut)
    -- (1, Nord, jan, 100, ok) (4, Sud, fev, 70, ok)
    -- (2, Nord, jan, 50, ok) (5, Nord, fev, 30, ok)
    -- (3, Sud, jan, 80, annulee) (6, Sud, jan, 20, ok)
    SELECT region, mois, COUNT(*) AS n, SUM(montant) AS total
    FROM cmd
    WHERE statut = 'ok'
    GROUP BY region, mois;
    `

    • Nord | jan | 2 | 150
    • Nord | jan | 3 | 150
    • Nord | jan | 2 | 75
    • Sud | jan | 2 | 100
    Voir la réponse

    Nord | jan | 2 | 150

    Le filtre précède le regroupement : la commande 3, annulée, ne compte pas, et Sud en janvier ne vaut que 20 sur une ligne. Nord en janvier regroupe les commandes 1 et 2 : 2 lignes, 150. Le résultat compte 4 lignes.

  • … filtre les lignes avant le regroupement, alors que … filtre les groupes après le calcul des agrégats.

    Voir la réponse

    WHERE filtre les lignes avant le regroupement, alors que HAVING filtre les groupes après le calcul des agrégats.

    Une condition sur un total (SUM(montant) > 1000) n'existe qu'après le regroupement : elle va dans HAVING. Une condition sur une colonne de la ligne va dans WHERE, et allège le travail du regroupement.

  • GROUP BY : de quoi s'agit-il ?

    Voir la réponse

    Clause SQL qui regroupe les lignes ayant les mêmes valeurs dans les colonnes citées et rend une ligne par groupe présent dans les données.

    Une combinaison absente des données (un produit jamais vendu le dimanche) ne produit aucune ligne : elle n'apparaît pas avec un zéro.