Hologres prend en charge un sous-ensemble des fonctions d'agrégation de PostgreSQL. Cette rubrique répertorie les fonctions prises en charge avec leur syntaxe, leurs paramètres et des exemples.
Pour la spécification complète des fonctions d'agrégation PostgreSQL, consultez Fonctions d'agrégation.
Fonctions prises en charge
Le tableau suivant répertorie toutes les fonctions prises en charge, regroupées par catégorie.
Agrégation générale
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| AVG | BIGINT, FLOAT4, FLOAT8, INT | Identique à l'entrée | Moyenne des valeurs non NULL |
| COUNT | * ou toute expression |
BIGINT | Nombre de lignes ou nombre de valeurs d'entrée non NULL |
| MAX | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Identique à l'entrée | Valeur maximale |
| MAX_BY | Tout (x), tout type comparable (y) | Identique à x | Valeur de x dans la ligne où y est maximal |
| MIN | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Identique à l'entrée | Valeur minimale |
| MIN_BY | Tout (x), tout type comparable (y) | Identique à x | Valeur de x dans la ligne où y est minimal |
| SUM | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Identique à l'entrée | Somme de toutes les valeurs |
| ARRAY_AGG | Tout (sauf JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, tableaux) | ARRAY | Valeurs agrégées dans un tableau |
| STRING_AGG | TEXT, TEXT | TEXT | Valeurs non NULL concaténées avec un séparateur |
Agrégation booléenne
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| BOOL_AND | BOOLEAN | BOOLEAN | TRUE si toutes les valeurs sont vraies |
| BOOL_OR | BOOLEAN | BOOLEAN | TRUE si au moins une valeur est vraie |
| EVERY | BOOLEAN | BOOLEAN | TRUE si toutes les valeurs sont vraies |
Agrégation binaire
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| BIT_AND | BIGINT, INT | Identique à l'entrée | ET binaire des valeurs non NULL |
| BIT_OR | BIGINT, INT | Identique à l'entrée | OU binaire des valeurs non NULL |
Estimation de la cardinalité (à l'aide de HyperLogLog)
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| APPROX_COUNT_DISTINCT | Tout | BIGINT | Compte distinct approximatif (HyperLogLog) |
| UNIQ | SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIMETZ, UUID | BIGINT | Compte distinct des valeurs d'une colonne, optimisé pour les GROUP BY à forte cardinalité |
Estimation des percentiles
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| APPROX_PERCENTILE | NUMERIC | NUMERIC | Percentile approximatif (échantillonnage par réservoir ; V3.1+) |
Statistiques
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| CORR | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Coefficient de corrélation |
| COVAR_POP | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Covariance de population |
| COVAR_SAMP | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Covariance d'échantillon |
| STDDEV | INT, NUMERIC, FLOAT8 | NUMERIC ou FLOAT8 | Écart type d'échantillon |
| STDDEV_POP | INT, NUMERIC, FLOAT8 | NUMERIC ou FLOAT8 | Écart type de population |
| STDDEV_SAMP | INT, NUMERIC, FLOAT8 | NUMERIC ou FLOAT8 | Écart type d'échantillon |
| VARIANCE | INT, NUMERIC | NUMERIC | Variance d'échantillon |
| VAR_POP | FLOAT8, INT, NUMERIC | NUMERIC ou FLOAT8 | Variance de population |
| VAR_SAMP | INT, FLOAT8, NUMERIC | NUMERIC ou FLOAT8 | Variance d'échantillon |
Régression linéaire
| Fonction | Types d'arguments | Type de retour | Description |
|---|---|---|---|
| REGR_AVGX | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Moyenne de la variable indépendante (X) |
| REGR_AVGY | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Moyenne de la variable dépendante (Y) |
| REGR_COUNT | DOUBLE PRECISION, FLOAT, FLOAT8 | BIGINT | Lignes dont aucune entrée n'est NULL |
| REGR_INTERCEPT | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Ordonnée à l'origine de la droite de régression des moindres carrés |
| REGR_R2 | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Carré du coefficient de corrélation |
| REGR_SLOPE | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Pente de la droite de régression des moindres carrés |
| REGR_SXX | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Somme des carrés de X |
| REGR_SXY | DOUBLE PRECISION, FLOAT, FLOAT8 | Identique à l'entrée | Somme des produits de X et Y |
Exemple de données
Les exemples suivants utilisent example_table. Exécutez ce script de configuration pour créer la table et insérer des exemples de données.
-- Create a table.
CREATE TABLE example_table(
c1 INT,
c2 BOOLEAN,
c3 VARCHAR(10),
c4 DECIMAL(3, 1),
c5 TEXT,
c6 FLOAT8,
c7 FLOAT8
);
-- Insert data.
INSERT INTO example_table (c1, c2, c3, c4, c5, c6, C7) VALUES
(1, true, 'a', 1.1, 3, 6, 7),
(2, false, 'b', 2.2, 4, 6, 2.6);
APPROX_COUNT_DISTINCT
Utilise l'estimation de cardinalité HyperLogLog pour renvoyer un compte distinct approximatif. Le taux d'erreur moyen se situe entre 0,1 % et 1 %, ce qui engendre une surcharge bien inférieure à celle d'un COUNT DISTINCT ( column ) exact.
APPROX_COUNT_DISTINCT ( <column> )
Paramètres
| Paramètre | Description |
|---|---|
column |
Obligatoire. Colonne pour laquelle calculer le compte distinct approximatif. |
Notes d'utilisation
La précision de l'algorithme HyperLogLog est contrôlée par un paramètre de segmentation :
SET hg_experimental_approx_count_distinct_precision = 20;
| Paramétrage | Détails |
|---|---|
| Plage valide | 12–20 |
| Valeur par défaut | 17 |
| Effet | Une valeur plus élevée augmente le nombre de compartiments et la précision, mais aussi la consommation de ressources de calcul et de mémoire |
| Précision > 17 | Bascule vers l'algorithme HyperLogLog++, qui réduit davantage l'erreur et la stabilise |
| Précision = 20 | Réduit l'erreur à 0,01 %–0,2 % dans la plupart des cas |
Définissez ce paramètre au niveau de la session avec SET ou au niveau de la base de données avec ALTER DATABASE :
-- Session level
SET hg_experimental_approx_count_distinct_precision = 20;
-- Database level
ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
Pour effectuer un compte distinct exact, utilisez COUNT DISTINCT ( column ) . Cette opération consomme davantage de ressources.
Exemple
Les exemples suivants utilisent la table ORDERS issue du jeu de données public TPC-H fourni par MaxCompute. Exécutez le script de configuration ci-dessous pour créer les tables requises avant d'exécuter les requêtes.
-- Create a foreign table.
IMPORT FOREIGN SCHEMA public_data
LIMIT TO (ORDERS_10g)
FROM SERVER odps_server INTO public options (if_table_exist 'update');
-- Create an internal table.
BEGIN;
CREATE TABLE ORDERS (
O_ORDERKEY bigint NOT NULL PRIMARY KEY,
O_CUSTKEY int NOT NULL,
O_ORDERSTATUS text NOT NULL,
O_TOTALPRICE DECIMAL(12, 2) NOT NULL,
O_ORDERDATE timestamptz NOT NULL,
O_ORDERPRIORITY text NOT NULL,
O_CLERK text NOT NULL,
O_SHIPPRIORITY int NOT NULL,
O_COMMENT text NOT NULL
);
CALL set_table_property ('ORDERS', 'segment_key', 'O_ORDERDATE');
CALL set_table_property ('ORDERS', 'distribution_key', 'O_ORDERKEY');
CALL set_table_property ('ORDERS', 'bitmap_columns', 'O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT');
CALL set_table_property ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_COMMENT');
COMMENT ON COLUMN ORDERS.O_ORDERKEY IS 'Order ID';
COMMENT ON COLUMN ORDERS.O_CUSTKEY IS 'Customer ID';
COMMENT ON COLUMN ORDERS.O_ORDERSTATUS IS 'Order status';
COMMENT ON COLUMN ORDERS.O_TOTALPRICE IS 'Total price';
COMMENT ON COLUMN ORDERS.O_ORDERDATE IS 'Order date';
COMMENT ON COLUMN ORDERS.O_ORDERPRIORITY IS 'Order priority';
COMMENT ON COLUMN ORDERS.O_CLERK IS 'Cashier';
COMMENT ON COLUMN ORDERS.O_SHIPPRIORITY IS 'Shipping priority';
COMMENT ON COLUMN ORDERS.O_COMMENT IS 'Comment';
COMMIT;
-- Import data to the internal table.
INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
Calculez le compte distinct approximatif dans la colonne O_CUSTKEY :
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Résultat :
approx_count_distinct
-----------------------
1000422
Calculez avec une précision globale définie sur 20 :
ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Résultat :
approx_count_distinct
-----------------------
1000422
Calculez avec une précision au niveau de la session définie sur 20 :
SET hg_experimental_approx_count_distinct_precision = 20;
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Résultat :
approx_count_distinct
-----------------------
998854
APPROX_PERCENTILE
Pris en charge dans Hologres V3.1 et versions ultérieures.
Utilise l'échantillonnage par réservoir (jusqu'à 8 192 éléments) pour renvoyer un percentile approximatif d'une colonne numérique.
APPROX_PERCENTILE (fraction) WITHIN GROUP (ORDER BY sort_expression)
Paramètres
| Paramètre | Description |
|---|---|
fraction |
Obligatoire. Constante comprise entre 0 et 1. Par exemple, 0.5 représente la médiane. |
sort_expression |
Obligatoire. Colonne pour laquelle calculer le percentile. Doit être triable. |
Exemple
Calculez Q1, la médiane et Q3 d'une colonne de salaire :
SELECT
APPROX_PERCENTILE(0.25) WITHIN GROUP (ORDER BY salary) AS q1,
APPROX_PERCENTILE(0.5) WITHIN GROUP (ORDER BY salary) AS median,
APPROX_PERCENTILE(0.75) WITHIN GROUP (ORDER BY salary) AS q3
FROM employees;
ARRAY_AGG
Agrège les valeurs de toute expression dans un tableau.
ARRAY_AGG(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression de tout type de données, à l'exception de JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID et des types tableau. |
Valeur de retour
Type ARRAY.
Exemple
SELECT ARRAY_AGG(c1) FROM example_table;
Résultat :
array_agg
-----------
{2,1}
AVG
Renvoie la moyenne des valeurs non NULL.
AVG(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT, FLOAT8, FLOAT4 ou INT. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT AVG(c7) FROM example_table;
Résultat :
avg
----------
1.500000
BIT_AND
Effectue un ET binaire sur toutes les valeurs non NULL.
BIT_AND(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT ou INT. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT BIT_AND(c1) FROM example_table;
Résultat :
bit_and
---------
0
BIT_OR
Effectue un OU binaire sur toutes les valeurs non NULL.
BIT_OR(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT ou INT. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT BIT_OR(c1) FROM example_table;
Résultat :
bit_or
--------
3
BOOL_AND
Renvoie TRUE si toutes les valeurs d'une expression booléenne sont vraies ; renvoie FALSE sinon.
BOOL_AND(bool)
Paramètres
| Paramètre | Description |
|---|---|
bool |
Obligatoire. Expression BOOLEAN. |
Valeur de retour
BOOLEAN. Renvoie t si toutes les valeurs sont vraies, f sinon.
Exemple
SELECT BOOL_AND(c2) FROM example_table;
Résultat :
bool_and
----------
f
BOOL_OR
Renvoie TRUE si au moins une valeur d'une expression booléenne est vraie ; renvoie FALSE sinon.
BOOL_OR(bool)
Paramètres
| Paramètre | Description |
|---|---|
bool |
Obligatoire. Expression BOOLEAN. |
Valeur de retour
BOOLEAN. Renvoie t si au moins une valeur est vraie, f sinon.
Exemple
SELECT BOOL_OR(c2) FROM example_table;
Résultat :
bool_or
---------
t
CORR
Calcule le coefficient de corrélation entre deux variables. Les deux paramètres doivent être de type DOUBLE PRECISION, FLOAT ou FLOAT8.
CORR(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8 (variable dépendante). |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8 (variable indépendante). |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT CORR(c6, c7) FROM example_table;
COUNT
Renvoie le nombre de lignes ou le nombre de valeurs non NULL dans une expression.
COUNT(*)compte toutes les lignes, y compris celles contenant des valeurs NULL.COUNT(expression)ne compte que les valeurs non NULL.
-- Count all rows, including rows with NULL values.
COUNT(*)
-- Count only non-NULL input values.
COUNT(expression)
Paramètres
| Paramètre | Description |
|---|---|
* |
Compte toutes les lignes, y compris celles dont les colonnes contiennent NULL. |
expression |
Obligatoire. Expression BIGINT ou NUMERIC non NULL. Les lignes où l'expression est NULL ne sont pas comptées. |
Valeur de retour
BIGINT.
Exemple
SELECT COUNT(*) FROM example_table;
Résultat :
count
-------
2
COVAR_POP
Calcule la covariance de population de deux variables.
COVAR_POP(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT COVAR_POP(c6, c7) FROM example_table;
Résultat :
covar_pop
---------------------
3.5527136788005e-15
COVAR_SAMP
Calcule la covariance d'échantillon de deux variables.
COVAR_SAMP(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT COVAR_SAMP(c6, c7) FROM example_table;
Résultat :
covar_samp
--------------------
7.105427357601e-15
EVERY
Renvoie TRUE si toutes les valeurs d'une expression booléenne sont vraies ; renvoie FALSE sinon.
EVERY(bool)
Paramètres
| Paramètre | Description |
|---|---|
bool |
Obligatoire. Expression BOOLEAN. |
Valeur de retour
BOOLEAN. Renvoie t si toutes les valeurs sont vraies, f sinon.
Exemple
SELECT EVERY(c2) FROM example_table;
Résultat :
every
-------
f
MAX
Renvoie la valeur maximale.
MAX(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT, FLOAT8, FLOAT4, INT ou NUMERIC. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT MAX(c1) FROM example_table;
Résultat :
max
-----
2
MAX_BY
Pris en charge dans Hologres V1.3.36 et versions ultérieures. Pour les versions antérieures, consultez Comment obtenir davantage de support en ligne ?
Recherche la ligne dont la valeur de la colonne y est maximale et renvoie la valeur correspondante de la colonne x. Par exemple, si une table contient les colonnes name et cost, MAX_BY(name, cost) renvoie le nom de l'article ayant le coût le plus élevé.
Les types numériques sont comparés par valeur numérique. Les types non numériques sont comparés selon l'ordre de tri du dictionnaire.
MAX_BY(x, y)
Paramètres
| Paramètre | Description |
|---|---|
y |
Obligatoire. Colonne à partir de laquelle rechercher la valeur maximale. Les lignes où y est NULL sont exclues. |
x |
Obligatoire. Colonne à partir de laquelle renvoyer la valeur correspondant au y maximal. |
Valeur de retour
Renvoie la valeur de
xde la ligne oùyest maximal.Renvoie NULL si toutes les valeurs de
ysont NULL.Si plusieurs lignes partagent la valeur
ymaximale, renvoie la valeur maximale desxcorrespondants.
Exemple
-- Sample data
DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test (
id INT,
name TEXT,
cost INT
);
INSERT INTO test
VALUES (1, 'a', 100), (1, 'aa', 200), (1, 'aaa', 300), (2, 'b', 150), (2, 'bb', 300), (3, 'c', 150), (3, 'cc', 50);
Renvoyez le nom correspondant au coût le plus élevé. Comme plusieurs lignes partagent le coût maximal (300), la fonction renvoie la valeur name maximale parmi ces lignes :
SELECT max_by(name, cost) FROM test;
Résultat :
max_by
--------
aaa
MIN
Renvoie la valeur minimale.
MIN(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT, FLOAT8, FLOAT4, INT ou NUMERIC. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT MIN(c1) FROM example_table;
Résultat :
min
-----
1
MIN_BY
Pris en charge dans Hologres V1.3.36 et versions ultérieures. Pour les versions antérieures, consultez Comment obtenir davantage de support en ligne ?
Recherche la ligne dont la valeur de la colonne y est minimale et renvoie la valeur correspondante de la colonne x. Par exemple, si une table contient les colonnes name et cost, MIN_BY(name, cost) renvoie le nom de l'article ayant le coût le plus bas.
Les types numériques sont comparés par valeur numérique. Les types non numériques sont comparés selon l'ordre de tri du dictionnaire.
MIN_BY(x, y)
Paramètres
| Paramètre | Description |
|---|---|
y |
Obligatoire. Colonne à partir de laquelle rechercher la valeur minimale. Les lignes où y est NULL sont exclues. |
x |
Obligatoire. Colonne à partir de laquelle renvoyer la valeur correspondant au y minimal. |
Valeur de retour
Renvoie la valeur de
xde la ligne oùyest minimal.Renvoie NULL si toutes les valeurs de
ysont NULL.Si plusieurs lignes partagent la valeur
yminimale, renvoie la valeur minimale desxcorrespondants.
Exemple
-- Sample data
DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test (
id INT,
name TEXT,
cost INT
);
INSERT INTO test
VALUES (1, 'a', 100), (1, 'aa', 200), (1, 'aaa', 300), (2, 'b', 150), (2, 'bb', 300), (3, 'c', 150), (3, 'cc', 50);
Renvoyez le nom correspondant au coût le plus bas :
SELECT MIN_BY(name, cost) FROM test;
Résultat :
min_by
--------
cc
(1 row)
REGR_AVGX
Calcule la moyenne de la variable indépendante (X).
REGR_AVGX(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_AVGX(c6, c7) FROM example_table;
Résultat :
regr_avgx
-----------
4.8
REGR_AVGY
Calcule la moyenne de la variable dépendante (Y).
REGR_AVGY(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_AVGY(c6, c7) FROM example_table;
Résultat :
regr_avgy
-----------
6
REGR_COUNT
Renvoie le nombre de lignes dont aucune entrée n'est NULL.
REGR_COUNT(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
BIGINT.
Exemple
SELECT REGR_COUNT(c6, c7) FROM example_table;
Résultat :
regr_count
------------
2
REGR_R2
Calcule le carré du coefficient de corrélation (R²).
REGR_R2(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_R2(c6, c7) FROM example_table;
Résultat :
regr_r2
---------
1
REGR_INTERCEPT
Calcule l'ordonnée à l'origine de l'équation linéaire déterminée par la méthode des moindres carrés à partir des paires (Y, X).
REGR_INTERCEPT(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_INTERCEPT(c6, c7) FROM example_table;
Résultat :
regr_intercept
----------------
6
REGR_SLOPE
Calcule la pente de l'équation linéaire déterminée par la méthode des moindres carrés.
REGR_SLOPE(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_SLOPE(c6, c7) FROM example_table;
Résultat :
regr_slope
----------------------
7.34031751818285e-16
REGR_SXX
Calcule la somme des carrés de la variable indépendante (X), soit sum(X^2) - sum(X)^2/N.
REGR_SXX(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_SXX(c6, c7) FROM example_table;
Résultat :
regr_sxx
----------
9.68
REGR_SXY
Calcule la somme des produits de la variable indépendante (X) et de la variable dépendante (Y), soit sum(X*Y) - sum(X) * sum(Y)/N.
REGR_SXY(Y, X)
Paramètres
| Paramètre | Description |
|---|---|
Y |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
X |
Obligatoire. Expression DOUBLE PRECISION, FLOAT ou FLOAT8. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT REGR_SXY(c6, c7) FROM example_table;
Résultat :
regr_sxy
--------------------
7.105427357601e-15
SUM
Renvoie la somme de toutes les valeurs.
SUM(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression BIGINT, FLOAT8, FLOAT4, INT ou NUMERIC. |
Valeur de retour
Même type de données que l'entrée.
Exemple
SELECT SUM(c1) FROM example_table;
Résultat :
sum
-----
3
STDDEV
Renvoie l'écart type d'échantillon.
STDDEV(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression INT, NUMERIC ou FLOAT8. |
Valeur de retour
NUMERIC ou FLOAT8.
Exemple
SELECT STDDEV(c1) FROM example_table;
Résultat :
stddev
--------------
0.7071067811
STDDEV_POP
Renvoie l'écart type de population.
STDDEV_POP(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression INT, NUMERIC ou FLOAT8. |
Valeur de retour
NUMERIC ou FLOAT8.
Exemple
SELECT STDDEV_POP(c1) FROM example_table;
Résultat :
stddev_pop
--------------
0.5000000000
STDDEV_SAMP
Renvoie l'écart type d'échantillon. Équivalent à STDDEV.
STDDEV_SAMP(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression INT, NUMERIC ou FLOAT8. |
Valeur de retour
NUMERIC ou FLOAT8.
Exemple
SELECT STDDEV_SAMP(c1) FROM example_table;
Résultat :
stddev_samp
--------------
0.7071067812
STRING_AGG
Concatène les valeurs non NULL en une seule chaîne, séparées par un délimiteur spécifié.
STRING_AGG(<expression> TEXT, <delimiter> TEXT)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Chaîne source (TEXT). |
delimiter |
Obligatoire. Chaîne de séparation (TEXT). |
Valeur de retour
TEXT.
Exemple
SELECT STRING_AGG(c5, '-') FROM example_table;
Résultat :
string_agg
------------
3-4
UNIQ
Pris en charge dans Hologres V1.3 et versions ultérieures. Pour les versions antérieures, consultez Erreurs courantes lors de la préparation d'une mise à niveau ou Comment obtenir davantage de support en ligne ? .
Renvoie le compte distinct pour une colonne. UNIQ offre de meilleures performances que COUNT DISTINCT lorsque la requête inclut une clause GROUP BY et que les valeurs du champ GROUP BY sont uniformément réparties sans skew de données.
UNIQ ( <column> )
Paramètres
| Paramètre | Description |
|---|---|
column |
Obligatoire. Colonne pour laquelle calculer le compte distinct. Types pris en charge : SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIMETZ et UUID. |
Notes d'utilisation
UNIQ consomme moins de mémoire que COUNT DISTINCT et constitue une alternative utile lorsque COUNT DISTINCT provoque des erreurs de dépassement de mémoire.
UNIQ offre de meilleures performances que COUNT DISTINCT lorsque la clé GROUP BY présente une cardinalité élevée.
UNIQ ne surpasse COUNT DISTINCT que lorsque la requête comporte une clause
GROUP BYet que les valeurs sont uniformément réparties. Sans clause GROUP BY ou en présence de skew de données, aucun avantage en termes de performances n'est constaté.Depuis Hologres V2.1, COUNT DISTINCT a été considérablement optimisé dans divers scénarios, notamment pour les fonctions COUNT DISTINCT simples et multiples, le skew de données et les requêtes sans clause GROUP BY. Il n'est généralement plus nécessaire de réécrire manuellement les requêtes pour utiliser UNIQ. Pour plus de détails, consultez Optimisation de Count Distinct.
Exemple
Les exemples suivants utilisent la table ORDERS issue du jeu de données public TPC-H. Consultez APPROX_COUNT_DISTINCT pour le script de configuration de la table.
Calculez le compte distinct de O_CUSTKEY dans la table ORDERS :
SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;
Résultat :
uniq
--------
999982
Calculez le compte distinct de O_CUSTKEY pour chaque O_ORDERSTATUS :
SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;
Résultat :
o_orderstatus | uniq
---------------+--------
P | 313478
F | 996258
O | 996400
VARIANCE
Renvoie la variance d'échantillon.
VARIANCE(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression INT ou NUMERIC. |
Valeur de retour
NUMERIC.
Exemple
SELECT VARIANCE(c1) FROM example_table;
Résultat :
variance
--------------
0.5000000000
VAR_POP
Renvoie la variance de population.
VAR_POP(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression FLOAT8, INT ou NUMERIC. |
Valeur de retour
NUMERIC ou FLOAT8.
Exemple
SELECT VAR_POP(c1) FROM example_table;
Résultat :
var_pop
--------------
0.2500000000
VAR_SAMP
Renvoie la variance d'échantillon.
VAR_SAMP(expression)
Paramètres
| Paramètre | Description |
|---|---|
expression |
Obligatoire. Expression INT, FLOAT8 ou NUMERIC. |
Valeur de retour
NUMERIC ou FLOAT8.
Exemple
SELECT VAR_SAMP(c1) FROM example_table;
Résultat :
var_samp
--------------
0.5000000000