Recherche…


Syntaxe

  • Fonction (expression [ DISTINCT ]) -DISTINCT est un paramètre facultatif
  • AVG (expression [ALL | DISTINCT])
  • COUNT ({[ALL | DISTINCT] expression] | *})
  • GROUPING (<expression_colonne>)
  • MAX (expression [ALL | DISTINCT])
  • MIN (expression [ALL | DISTINCT])
  • SUM ([ALL | DISTINCT] expression)
  • VAR (expression [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)
  • VARP (expression [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause
  • STDEV (expression [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)
  • STDEVP (expression [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)

Remarques

Dans la gestion de base de données, une fonction d'agrégat est une fonction où les valeurs de plusieurs lignes sont regroupées en tant qu'entrée sur certains critères pour former une valeur unique de signification ou de mesure plus significative telle qu'un ensemble, un sac ou une liste.

MIN        returns the smallest value in a given column
MAX        returns the largest value in a given column
SUM        returns the sum of the numeric values in a given column
AVG        returns the average value of a given column
COUNT      returns the total number of values in a given column
COUNT(*)   returns the number of rows in a table
GROUPING   Is a column or an expression that contains a column in a GROUP BY clause.
STDEV      returns the statistical standard deviation of all values in the specified expression.
STDEVP     returns the statistical standard deviation for the population for all values in the specified expression.
VAR        returns the statistical variance of all values in the specified expression. may be followed by the OVER clause.
VARP       returns the statistical variance for the population for all values in the specified expression.

Les fonctions d'agrégat sont utilisées pour calculer une "colonne de données numériques renvoyée" de votre SELECT . Ils résument essentiellement les résultats d'une colonne particulière de données sélectionnées. - SQLCourse2.com

Toutes les fonctions d'agrégation ignorent les valeurs NULL.

SOMME

Sum fonction somme additionne la valeur de toutes les lignes du groupe. Si la clause group by est omise, puis somme toutes les lignes.

select sum(salary) TotalSalary
from employees;
Salaire total
2500
select DepartmentId, sum(salary) TotalSalary
from employees
group by DepartmentId;
DépartementId Salaire total
1 2000
2 500

Agrégation conditionnelle

Tableau des paiements

Client Type de paiement Montant
Peter Crédit 100
Peter Crédit 300
John Crédit 1000
John Débit 500
select customer, 
       sum(case when payment_type = 'credit' then amount else 0 end) as credit,
       sum(case when payment_type = 'debit' then amount else 0 end) as debit
from payments
group by customer

Résultat:

Client Crédit Débit
Peter 400 0
John 1000 500
select customer, 
       sum(case when payment_type = 'credit' then 1 else 0 end) as credit_transaction_count,
       sum(case when payment_type = 'debit' then 1 else 0 end) as debit_transaction_count
from payments
group by customer

Résultat:

Client credit_transaction_count debit_transaction_count
Peter 2 0
John 1 1

AVG ()

La fonction d'agrégation AVG () renvoie la moyenne d'une expression donnée, généralement des valeurs numériques dans une colonne. Supposons que nous ayons un tableau contenant le calcul annuel de la population dans les villes du monde entier. Les enregistrements pour New York City ressemblent à ceux ci-dessous:

EXEMPLE DE TABLE

Nom de Ville population an
La ville de New York 8 550 405 2015
La ville de New York ... ...
La ville de New York 8 000 906 2005

Pour sélectionner la population moyenne de la ville de New York, États-Unis, à partir d'un tableau contenant les noms de villes, les mesures de population et les années de mesure pour les dix dernières années:

QUESTION

select city_name, AVG(population) avg_population
from city_population
where city_name = 'NEW YORK CITY';

Notez que l'année de mesure est absente de la requête, car la population est moyennée au fil du temps.

RÉSULTATS

Nom de Ville avg_population
La ville de New York 8 250 754

Remarque: La fonction AVG () convertit les valeurs en types numériques. Ceci est particulièrement important lorsque vous travaillez avec des dates.

Concaténation de liste

Crédit partiel à cette réponse SO.

La concaténation de liste agrège une colonne ou une expression en combinant les valeurs en une seule chaîne pour chaque groupe. Une chaîne pour délimiter chaque valeur (vide ou une virgule si elle est omise) et l'ordre des valeurs dans le résultat peuvent être spécifiés. Bien qu'il ne fasse pas partie du standard SQL, chaque grand fournisseur de bases de données relationnelles le prend en charge à sa manière.

MySQL

SELECT ColumnA
     , GROUP_CONCAT(ColumnB ORDER BY ColumnB SEPARATOR ',') AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

Oracle et DB2

SELECT ColumnA
     , LISTAGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

PostgreSQL

SELECT ColumnA
     , STRING_AGG(ColumnB, ',' ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

serveur SQL

SQL Server 2016 et versions antérieures

(CTE inclus pour encourager le principe DRY )

  WITH CTE_TableName AS (
       SELECT ColumnA, ColumnB
         FROM TableName)
SELECT t0.ColumnA
     , STUFF((
       SELECT ',' + t1.ColumnB
         FROM CTE_TableName t1
        WHERE t1.ColumnA = t0.ColumnA
        ORDER BY t1.ColumnB
          FOR XML PATH('')), 1, 1, '') AS ColumnBs
  FROM CTE_TableName t0
 GROUP BY t0.ColumnA
 ORDER BY ColumnA;

SQL Server 2017 et SQL Azure

SELECT ColumnA
     , STRING_AGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

SQLite

sans commander:

SELECT ColumnA
     , GROUP_CONCAT(ColumnB, ',') AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

la commande nécessite une sous-requête ou CTE:

  WITH CTE_TableName AS (
       SELECT ColumnA, ColumnB
         FROM TableName
        ORDER BY ColumnA, ColumnB)
SELECT ColumnA
     , GROUP_CONCAT(ColumnB, ',') AS ColumnBs
  FROM CTE_TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

Compter

Vous pouvez compter le nombre de lignes:

SELECT count(*) TotalRows
FROM employees;
TotalRows
4

Ou comptez les employés par département:

SELECT DepartmentId, count(*) NumEmployees
FROM employees
GROUP BY DepartmentId;
DépartementId NumEmployees
1 3
2 1

Vous pouvez compter sur une colonne / expression avec l'effet qui ne compte pas les valeurs NULL :

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr
3

(Il y a une colonne managerID valeur nulle)

Vous pouvez également utiliser DISTINCT dans une autre fonction telle que COUNT pour ne trouver que les membres DISTINCT de l'ensemble pour effectuer l'opération.

Par exemple:

 SELECT COUNT(ContinentCode) AllCount
 ,      COUNT(DISTINCT ContinentCode) SingleCount
 FROM Countries;

Renverra des valeurs différentes. Le compte SingleCount ne comptera qu'une fois les continents, tandis que le compte AllCount comportera des doublons.

ContinentCode
OC
UE
COMME
N / A
N / A
UN F
UN F

AllCount: 7 SingleCount: 5

Max

Trouvez la valeur maximale de la colonne:

select max(age) from employee;

L'exemple ci-dessus renverra la valeur la plus élevée pour l' age de la colonne de la table des employee .

Syntaxe:

SELECT MAX(column_name) FROM table_name;

Min

Trouvez la plus petite valeur de colonne:

 select min(age) from employee;

L'exemple ci-dessus renvoie la plus petite valeur pour l' age de la colonne de la table des employee .

Syntaxe:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow