prof404
← Retour aux ressources du module
Sommaire (3 sections) · 4 min
Ce que tu travailles iciCollecter et traiter les donnéesPourquoi ces compétences ?
  • BC01Collecter et traiter les données. Aller chercher la donnée et la rendre fiable : écrire les scripts qui l'extraient, repérer ce qui manque ou se contredit, et décider quoi en faire.

Ce sont les compétences du titre RNCP 38616, celles sur lesquelles le jury évalue.

Compter exactement des lignes avec COUNT(*)

Tu consultes pg_stat_user_tables pour vérifier le chargement d'une table. La colonne n_live_tup ressemble à un nombre de lignes, mais PostgreSQL ne parcourt pas la table pour la produire. Peut-on reprendre ce nombre dans une note de contrôle qualité ?

Cette fiche travaille le contrôle des données avec SQL, une compétence du bloc BC01.

Ton besoin Où travailler
Distinguer estimation et comptage Sections 1 et 2
Choisir la mesure adaptée Section 3

1. Comparer les deux nombres

Exécute cette requête sans présenter encore la valeur comme un comptage :

SQL
SELECT relname AS nom_table,
       n_live_tup AS estimation
FROM pg_stat_user_tables
WHERE relname = 'products';

Avant de continuer, écris ce que PostgreSQL a dû faire pour obtenir ce nombre. A-t-il parcouru les lignes de products au moment de ta requête ?

Compare maintenant avec un comptage sur toute la même table, sans filtre :

SQL
SELECT COUNT(*) AS nombre_lignes
FROM products;

Note les deux valeurs avec leur provenance. COUNT(*) compte les lignes visibles par cette requête. n_live_tup est une estimation issue des statistiques de suivi de l’activité de PostgreSQL, pas un comptage lancé par ta requête.

Et les estimations utilisées pour préparer une requête ?

Pour choisir comment exécuter une requête, PostgreSQL utilise notamment reltuples dans pg_class. C’est une autre estimation, distincte de n_live_tup. Pour ce contrôle qualité, retiens surtout la provenance du nombre et utilise COUNT(*) quand tu dois annoncer un effectif exact. Statistiques d’activité et statistiques du planificateur.

Les deux valeurs peuvent être égales. Cette égalité ne transforme pas n_live_tup en comptage : elle décrit seulement l'état actuel des statistiques.

2. Lire la provenance avant le nombre

Une estimation répond à « quelle taille dois-je prévoir ? ». Un comptage répond à « combien de lignes sont présentes maintenant ? ».

Phrase à écrire Mesure adaptée
Cette table contient exactement N lignes COUNT(*)
Cette table semble petite ou volumineuse avant une analyse rapide n_live_tup

pg_stat_user_tables est une vue système, c'est-à-dire un résultat fourni par PostgreSQL sur le fonctionnement de la base. La colonne n_live_tup peut évoluer après des insertions, suppressions ou opérations de maintenance. Elle n'offre pas la même garantie qu'un comptage exécuté sur les lignes visibles.

Teste maintenant la méthode exacte sur un sous-ensemble qui n'est pas demandé dans le TP : les produits dont le poids est absent. Ce nouveau comptage porte sur une partie de la table ; ne le compare pas à l’estimation de toute la table pour juger la précision de celle-ci.

SQL
SELECT COUNT(*) AS nombre_lignes
FROM products
WHERE product_weight_g IS NULL;

Si ton résultat doit être vérifiable dans un livrable, garde cette requête avec la phrase qu'elle justifie.

3. Choisir et vérifier sur une autre table

Tu dois contrôler une table de ton choix. Procède en deux temps :

  1. écris la phrase que tu veux pouvoir affirmer ;
  2. choisis n_live_tup ou COUNT(*), puis explique ce choix en commentaire SQL.

Si tu bloques, demande-toi si une approximation changerait la conclusion. Une note de nettoyage qui annonce un effectif demande un comptage exact.

Vérifie ensuite ta décision en exécutant les deux mesures sur la table choisie. Une différence confirme qu'elles ne répondent pas à la même exigence. Une égalité ne prouve pas qu'elles ont été calculées de la même façon.

SQL
-- Phrase à justifier : ...
SELECT COUNT(*) AS nombre_lignes
FROM nom_de_la_table;

Pour le TP, utilise COUNT(*) lorsque tu annonces le nombre de lignes d'une table. Le bac à sable n'affiche que 200 lignes au maximum, mais une requête de comptage renvoie une seule ligne et mesure bien l'ensemble.

À la fin de la leçon

Le quiz de la leçon

Choisis une réponse, puis lis l’explication avant de continuer.

  • 5 questions
  • 3 min par question
  • Une explication après chaque réponse

Le chrono démarre à la première question. Un clic sur une réponse valide ton choix.