OracleStatistique

Echantillonnage sous Oracle

La clause SAMPLE de l’ordre SELECT permet de réaliser un échantillonnage aléatoire des données d’une table. Le nombre de lignes retournées correspond approximativement au pourcentage passé en argument.
Dans l’exemple ci-dessous, on prélève à deux reprises aléatoirement 0.1% de la table COMMANDES. On peut noter la fluctuation du nombre de lignes restituées 253 & 237:

SQL> set NUMFORMAT 9999.99
SQL> 
SQL> SELECT AVG (montant), STDDEV_SAMP (montant), COUNT (*)
  2    FROM commandes SAMPLE (0.1);

AVG(MONTANT) STDDEV_SAMP(MONTANT) COUNT(*)
------------ -------------------- --------
      990.91                98.99   253.00

SQL> /

AVG(MONTANT) STDDEV_SAMP(MONTANT) COUNT(*)
------------ -------------------- --------
     1008.35                99.77   237.00

SQL> 

SAMPLE accepte aussi une clause optionnelle SEED qui permet de garantir la répétabilité de l’échantillonnage (utile dans des cas de test):

SQL> SELECT AVG (montant), STDDEV_SAMP (montant), COUNT (*)
  2    FROM commandes SAMPLE (0.1) SEED (1234);

AVG(MONTANT) STDDEV_SAMP(MONTANT) COUNT(*)
------------ -------------------- --------
     1016.87                98.90   247.00

SQL> /

AVG(MONTANT) STDDEV_SAMP(MONTANT) COUNT(*)
------------ -------------------- --------
     1016.87                98.90   247.00

SQL>



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *