Catégories :

Fonctions d’agrégation (estimation du centile), Fonctions de la fenêtre

APPROX_PERCENTILE_COMBINE

Combine (fusionne) les états d’entrée du centile en un seul état de sortie.

Cela permet des scénarios dans lesquels APPROX_PERCENTILE_ACCUMULATE est exécuté sur des partitions horizontales de la même table, générant un état d’algorithme pour chaque partition de la table. Ces états peuvent ensuite être combinés à l’aide de APPROX_PERCENTILE_COMBINE, produisant le même état de sortie qu’une seule exécution de APPROX_PERCENTILE_ACCUMULATE sur la table entière.

Voir aussi :

APPROX_PERCENTILE_ACCUMULATE , APPROX_PERCENTILE_ESTIMATE

Syntaxe

APPROX_PERCENTILE_COMBINE( <state> )

Arguments

état

Expression contenant des informations d’état générées par un appel à APPROX_PERCENTILE_ACCUMULATE.

Exemple

Renvoie une approximation de la médiane des nombres dans la colonne testtable.c2 (0.5 signifie le 50e centile) :

CREATE OR REPLACE TABLE mytesttable AS
  SELECT APPROX_PERCENTILE_COMBINE(td) s FROM
    (
      (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 <= 0)
        UNION ALL
      (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) td FROM testtable WHERE c2 > 0 AND c2 <= 0.5)
        UNION ALL
      (SELECT APPROX_PERCENTILE_ACCUMULATE(C2) td FROM testtable WHERE c2 > 0.5)
    );

SELECT APPROX_PERCENTILE_ESTIMATE(s , 0.5) FROM mytesttable;

Renvoie une valeur approximative pour le 2e centile de nombres dans mytest.s1 union mytest2.s2.

CREATE OR REPLACE TABLE mytest AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 < 0);

CREATE OR REPLACE TABLE mytest2 AS (SELECT APPROX_PERCENTILE_ACCUMULATE(c2) s1 FROM testtable WHERE c2 >= 0);

CREATE OR REPLACE TABLE combinedtable AS
  SELECT APPROX_PERCENTILE_COMINE(s) combinedstate FROM
    (
      (SELECT s1 s FROM mytest)
        UNION ALL
      (SELECT s1 s FROM mytest2)
    );

SELECT APPROX_PERCENTILE_ESTIMATE(combinedstate , 0.02) FROM combinedtable;

Pour un exemple plus détaillé, voir la section Exemples dans APPROX_PERCENTILE_ACCUMULATE.