Exemple de fonctions d'agrégation

RappelSchéma relationnel

CTRL+C pour copier, CTRL+V pour coller
1
country(#countrycode:char(2), name:varchar, population:numeric) 
2
city(#code:char(3), countrycode=>country, name:varchar, population:numeric):
country(#countrycode:char(2), name:varchar, population:numeric) 
city(#code:char(3), countrycode=>country, name:varchar, population:numeric):

Agrégat avec un attribut d'agrégation et une fonction d'agrégation

Requête sans agrégat

Sélectionne les countrycode et les citycode existants dans la table city.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT countrycode, citycode  
2
FROM city;
SELECT countrycode, citycode  
FROM city;
CTRL+C pour copier, CTRL+V pour coller
1
 countrycode | citycode 
2
-------------+----------
3
 ES          | BAR
4
 ES          | MAD
5
 ES          | ZAR
6
 FR          | PAR
7
 FR          | LYO
8
 FR          | LLL
9
 FR          | AMN
 countrycode | citycode 
-------------+----------
 ES          | BAR
 ES          | MAD
 ES          | ZAR
 FR          | PAR
 FR          | LYO
 FR          | LLL
 FR          | AMN

Requête avec agrégat

  • Sélectionne les countrycode et les citycode existants dans la table city,

  • puis agrège par valeurs distinctes de countrycode.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT countrycode, count(citycode)  
2
FROM city
3
GROUP BY countrycode;
SELECT countrycode, count(citycode)  
FROM city
GROUP BY countrycode;
CTRL+C pour copier, CTRL+V pour coller
1
 countrycode | count 
2
-------------+-------
3
 FR          |     4
4
 ES          |     3
 countrycode | count 
-------------+-------
 FR          |     4
 ES          |     3
Regroupement avec fonction d'agrégationInformations

Agrégat avec un attribut d'agrégation et deux fonctions d'agrégation

Sélectionne les countrycode, les citycode et les populations existants dans la table city.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT countrycode, citycode, population  
2
FROM city;
SELECT countrycode, citycode, population  
FROM city;
CTRL+C pour copier, CTRL+V pour coller
1
 countrycode | citycode | population 
2
-------------+----------+------------
3
 ES          | BAR      |        1.9
4
 ES          | MAD      |        3.3
5
 ES          | ZAR      |        0.7
6
 FR          | PAR      |        2.2
7
 FR          | LYO      |        0.5
8
 FR          | LLL      |        0.2
9
 FR          | AMN      |        0.1
 countrycode | citycode | population 
-------------+----------+------------
 ES          | BAR      |        1.9
 ES          | MAD      |        3.3
 ES          | ZAR      |        0.7
 FR          | PAR      |        2.2
 FR          | LYO      |        0.5
 FR          | LLL      |        0.2
 FR          | AMN      |        0.1

Requête avec agrégat

  • Sélectionne les countrycode, les citycode et les populations existants dans la table city,

  • puis agrège par valeurs distinctes de countrycode

  • puis calcule les fonctions count et sum.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT countrycode, count(citycode), sum(population)  
2
FROM city
3
GROUP BY countrycode;
SELECT countrycode, count(citycode), sum(population)  
FROM city
GROUP BY countrycode;
CTRL+C pour copier, CTRL+V pour coller
1
 countrycode | count | sum 
2
-------------+-------+-----
3
 FR          |     4 | 3.0
4
 ES          |     3 | 5.9
 countrycode | count | sum 
-------------+-------+-----
 FR          |     4 | 3.0
 ES          |     3 | 5.9
Regroupement avec deux fonctions d'agrégationInformations

Agrégat sans attribut d'agrégation et avec une fonction d'agrégation

Requête sans agrégat

Sélectionne les populations existants dans la table city.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT population  
2
FROM city;
SELECT population  
FROM city;
CTRL+C pour copier, CTRL+V pour coller
1
 population 
2
------------
3
        1.9
4
        3.3
5
        0.7
6
        2.2
7
        0.5
8
        0.2
9
        0.1
 population 
------------
        1.9
        3.3
        0.7
        2.2
        0.5
        0.2
        0.1

Requête avec agrégat

  • Sélectionne les populations existants dans la table city,

  • puis calcule la fonction avg (pour average, moyenne).

CTRL+C pour copier, CTRL+V pour coller
1
SELECT avg(population)  
2
FROM city;
SELECT avg(population)  
FROM city;
CTRL+C pour copier, CTRL+V pour coller
1
        avg         
2
--------------------
3
 1.2714285714285714
        avg         
--------------------
 1.2714285714285714
Regroupement avec fonction d'agrégation sans GROUP BYInformations