SQL peut être utilisé pour réaliser des calculs simples ainsi que de calculer des statistiques descriptives.
Opérateurs mathématiques
Opérateur | Description |
---|---|
+ | Addition |
- | Soustraction |
* | Multiplication |
/ | Division |
% | Modulo |
^ | Puissance |
|/ | Racine carrée |
||/ | Racine cubique |
! | Factorielle |
D'autres fonctions existent, comme ROUND()
, complémentaire aux opérateurs.
Un manière simple de tester les opérateurs est d'utiliser SELECT
:
SELECT 4 + 3;
SELECT 4 - 2:
SELECT 2 * 3;
On obtient le résultat suivant pour la première requête :
?column? |
---|
4 |
Calculs et types de données
Les calculs se font entre types de donnéesTypes de données SQL
Cette note a pour but d'expliquer les types de données rencontrée dans un tableau.
String
Les données composées de caractères conviennent pour du texte, des nombres ou des symboles. Les types 'caractères' incluent :
char(n)
Chaque observation aura une longueur n fixe. Si le contenu ne remplis pas la longueur complêtement, le reste sera rempli avec des espaces. C'est un bon format si l'on veut stocker des données à longueur fixe (comme un code postal, par exemple)
varchar(n)
Les observatio... number
. Quels types sont produits si les opérations utilisent des données de format différent ?
- Deux
integer
donnent uninteger
- Un
numeric
conjugué avec un autre nombre donne unnumeric
. - Un nombre à virgule flottante retourne un
double precision
.
A noter : la puissance, les racines et les factorielles retournent des types
numeric
oudouble precision
.
On peut utiliser CAST
pour modifier le type de données retournées. Plus sur le sujet dans la note dédiéeTypes de données SQL
Cette note a pour but d'expliquer les types de données rencontrée dans un tableau.
String
Les données composées de caractères conviennent pour du texte, des nombres ou des symboles. Les types 'caractères' incluent :
char(n)
Chaque observation aura une longueur n fixe. Si le contenu ne remplis pas la longueur complêtement, le reste sera rempli avec des espaces. C'est un bon format si l'on veut stocker des données à longueur fixe (comme un code postal, par exemple)
varchar(n)
Les observatio....
SELECT 11.0 / 6;
?column? |
---|
1.8333333333333333 |
Avec CAST
:
SELECT CAST(11.0 / 6 AS integer);
int4 |
---|
2 |
Effectuer des calculs sur des colonnes
Les calculs sur les colonnes peuvent être faits lors de la sélectionSELECTionner des données SQL
Introduction
Obtenir l'intégralité du tableau : *
La commande SELECT permet de sélectionner les données d'un tableau. L'instruction la plus simple retournant l'intégralité d'un tableau :
SELECT * FROM my_table;
Le nom du tableau est précisé avec le mot-clé FROM
L'opérateur * retourne tous les éléments disponibles.
Obtenir un sous-ensemble des colonnes du tableau : (col1, col2, ...)
On remplace *par le nom des colonnes qui nous intéresse :
SELECT some_column, another_column, amazing... ou lors d'une insertionInsérer des données dans un tableau SQL
Une fois le tableau [[Création de tableau SQL|créé]], on peut y ajouter es données avec la commande INSERT :
INSERT INTO teachers (first_name, last_name, school, hire_date, salary)
VALUES ('Janet' 'Smith', 'F.D. Roosevelt HS', '2011-10-30', 36200),
('Lee', 'Reynolds', 'F.D. Roosevelt HS', '1993-05-22', 65000)
('Samuel', 'Cole', 'Myers Middle School','2005-08-01', 43500),
('Samantha', 'Bush', 'Myers Middle School' '2011-10-30', 36200),
('Betty', 'Diaz', 'Myers Middle School', '2005-... :
On a la table supervisor_salaries
suivante :
town | supervisor | salary | benefits |
---|---|---|---|
Anytown | Jones | $27,000.00 | $10,000.00 |
Bumblyburg | Baker | $24,999.00 | $10,000.00 |
Moetown | Smith | $32,100.00 | $10,000.00 |
Bigville | Kao | $31,500.00 | $10,000.00 |
New Brillig | Carroll | $72,690.00 | $10,000.00 |
Sélection simple :
SELECT benefits * salary AS total_compensation
FROM supervisor_salaries;
total_compensation |
---|
$37,000.00 |
$34,999.00 |
$42,100.00 |
$41,500.00 |
$82,690.00 |
Avec une insertion de colonne :
update supervisor_salaries
SET total_comp = salary + benefits
WHERE salary IS NOT NULL AND benefits IS NOT NULL;
SELECT * from supervisor_salaries;
town | supervisor | salary | benefits | total_comp |
---|---|---|---|---|
Anytown | Jones | $27,000.00 | $10,000.00 | $37,000.00 |
Bumblyburg | Baker | $24,999.00 | $10,000.00 | $34,999.00 |
Moetown | Smith | $32,100.00 | $10,000.00 | $42,100.00 |
Bigville | Kao | $31,500.00 | $10,000.00 | $41,500.00 |
New Brillig | Carroll | $72,690.00 | $10,000.00 | $82,690.00 |
Calculer des statistiques descriptives
SQL vient avec des fonctions permettant d'obtenir des statistiques descriptives :
- Moyenne :
AVG()
- Percentiles (et donc médiane) :
percentile_cont(n)
pour des percentiles continus etpercentile_dic(n)
pour des percentiles discrets (égal à la valeur d'une observation) - …