Data Science, Python, Economie ...

Accueil

Opérations mathématiques avec SQL

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 un integer
  • Un numeric conjugué avec un autre nombre donne un numeric.
  • Un nombre à virgule flottante retourne un double precision.

A noter : la puissance, les racines et les factorielles retournent des types numeric ou double 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 et percentile_dic(n) pour des percentiles discrets (égal à la valeur d'une observation)