Fonctions Numériques

Calculs et arrondis mathématiques

20 min
DEBUTANT
Objectifs de cette leçon
  • Arrondir des nombres avec ROUND et comprendre les précisions
  • Tronquer des valeurs avec TRUNC
  • Utiliser MOD pour trouver des restes de division
  • Arrondir vers le haut (CEIL) ou vers le bas (FLOOR)
  • Calculer des valeurs absolues avec ABS
  • Effectuer des opérations mathématiques (POWER, SQRT)
  • Déterminer le signe d'un nombre avec SIGN

Les Fonctions Numériques

Les fonctions numériques permettent d'effectuer des calculs mathématiques, d'arrondir des valeurs, et de manipuler des nombres dans vos requêtes SQL.

Principales Fonctions Numériques

1. ROUND - Arrondir un Nombre

SELECT salaire,
       ROUND(salaire, 0) AS salaire_arrondi,
       ROUND(salaire, -3) AS salaire_arrondi_millier
FROM EMPLOYES;

ROUND(nombre, précision) arrondit au nombre de décimales spécifié.

  • Précision positive : nombre de décimales (ROUND(123.456, 2) = 123.46)
  • Précision 0 : arrondi à l'entier (ROUND(123.456, 0) = 123)
  • Précision négative : arrondi aux dizaines, centaines, etc. (ROUND(1234, -2) = 1200)

2. TRUNC - Tronquer un Nombre

SELECT salaire,
       TRUNC(salaire, 0) AS salaire_tronque,
       TRUNC(salaire, -3) AS salaire_tronque_millier
FROM EMPLOYES;

TRUNC fonctionne comme ROUND mais sans arrondir (coupe simplement les décimales).

3. MOD - Modulo (Reste de Division)

SELECT emp_id,
       MOD(emp_id, 2) AS est_pair,
       salaire,
       MOD(salaire, 1000) AS reste_millier
FROM EMPLOYES;

MOD(dividende, diviseur) retourne le reste de la division.

4. CEIL et FLOOR - Arrondir Vers le Haut ou le Bas

SELECT salaire,
       CEIL(salaire / 1000) AS milliers_sup,
       FLOOR(salaire / 1000) AS milliers_inf
FROM EMPLOYES;

CEIL arrondit vers le haut, FLOOR vers le bas.

5. ABS - Valeur Absolue

SELECT salaire - 50000 AS difference,
       ABS(salaire - 50000) AS difference_absolue
FROM EMPLOYES;

6. POWER et SQRT - Puissance et Racine Carrée

SELECT POWER(2, 3) AS deux_puissance_trois,
       SQRT(16) AS racine_de_16
FROM DUAL;

7. SIGN - Signe d'un Nombre

SELECT salaire - 50000 AS difference,
       SIGN(salaire - 50000) AS signe
FROM EMPLOYES;

Retourne -1 (négatif), 0 (zéro), ou 1 (positif).

Bonne pratique : Utilisez ROUND pour l'affichage et les rapports, TRUNC pour les calculs où vous devez supprimer les décimales sans arrondir.

Exemples Pratiques

-- Calculer une augmentation de 7.5% arrondie au millier supérieur
SELECT nom,
       salaire,
       CEIL(salaire * 1.075 / 1000) * 1000 AS nouveau_salaire
FROM EMPLOYES;

-- Identifier les employés avec un salaire pair ou impair
SELECT nom,
       salaire,
       CASE MOD(salaire, 2)
           WHEN 0 THEN 'Pair'
           ELSE 'Impair'
       END AS parite
FROM EMPLOYES;
Attention : La division par zéro provoque une erreur. Utilisez NULLIF ou CASE pour l'éviter : SELECT salaire / NULLIF(commission, 0)
Exemples de code
Arrondir les salaires de différentes manières

Démontre la différence entre ROUND (arrondit), TRUNC (coupe), et CEIL (arrondit vers le haut). Les précisions négatives permettent d'arrondir aux centaines, milliers, etc.

Résultat attendu : Affiche les salaires du département 10 avec différents types d'arrondis pour comparaison

Calculer le taux de commission

Combine plusieurs fonctions : division pour le ratio, multiplication par 100 pour le pourcentage, ROUND pour 2 décimales. MOD montre le reste après avoir enlevé les milliers.

Résultat attendu : Calcule le pourcentage que représente la commission par rapport au salaire, arrondi à 2 décimales
Exercices pratiques
Exercice 1 : Augmentation arrondie
FACILE
Calculez une augmentation de 5% pour chaque employé, puis arrondissez le nouveau salaire au millier supérieur. Affichez le nom, le salaire actuel et le nouveau salaire.
Voir l'indice
Multipliez le salaire par 1.05 pour l'augmentation de 5%, puis utilisez CEIL pour arrondir au millier supérieur.

Exercice 2 : Identifier les employés avec salaire impair
MOYEN
Trouvez tous les employés dont le salaire est un nombre impair et affichez la différence absolue entre leur salaire et la moyenne des salaires (arrondie à l'entier).
Voir l'indice
Utilisez MOD(salaire, 2) = 1 pour trouver les impairs, une sous-requête pour la moyenne, et ABS pour la différence absolue.
Accueil