ROUND Oracle : arrondir des nombres en SQL facilement

Découvrez la fonction ROUND en Oracle SQL : syntaxe, exemples pratiques et erreurs courantes pour arrondir vos valeurs numériques et dates efficacement.

Illustration du tutoriel SQL Oracle : ROUND Oracle : arrondir des nombres en SQL facilement

null

Publicité

Fonction ROUND Oracle : comment arrondir des valeurs en SQL

La fonction ROUND Oracle est l’une des fonctions numériques les plus utilisées en SQL. Elle permet d’arrondir un nombre à un nombre de décimales précis, ou d’arrondir une date à une unité de temps donnée. Que vous travailliez sur des calculs financiers, des statistiques ou des rapports métier, maîtriser ROUND en Oracle est une compétence essentielle pour tout développeur SQL.

🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.

Définition et utilisation de ROUND en Oracle

La fonction ROUND en Oracle SQL appartient à la famille des fonctions numériques et des fonctions de date. Elle accepte deux formes distinctes :

  • ROUND numérique : arrondit un nombre à un nombre défini de chiffres après (ou avant) la virgule.
  • ROUND date : arrondit une date à l’unité de temps la plus proche (jour, mois, année, heure, etc.).

Cas d’usage en entreprise

Dans un contexte professionnel, la fonction ROUND Oracle est indispensable dans de nombreux scénarios :

  • Finance et comptabilité : arrondir des montants à deux décimales pour les calculs de TVA, de commissions ou de salaires.
  • Rapports de performance : arrondir des indicateurs clés (KPI) comme des taux de conversion ou des moyennes de ventes.
  • Analyse de données : simplifier des résultats de calculs complexes pour les rendre lisibles dans des tableaux de bord.
  • Gestion de dates : regrouper des événements par mois ou par année en arrondissant les dates pour faciliter les agrégations.

À noter qu’Oracle suit la règle mathématique standard : si le chiffre suivant la dernière décimale conservée est supérieur ou égal à 5, le nombre est arrondi à la hausse ; sinon, il est tronqué.

Syntaxe de la fonction ROUND Oracle

Syntaxe pour les valeurs numériques

ROUND(nombre, [décimales])

Détail des paramètres :

  • nombre (obligatoire) : la valeur numérique à arrondir. Peut être une colonne, une expression ou un littéral numérique.
  • décimales (optionnel) : le nombre de décimales souhaité après la virgule. La valeur par défaut est 0 (arrondi à l’entier le plus proche). Si ce paramètre est négatif, l’arrondi s’effectue à gauche de la virgule (dizaines, centaines, etc.).

Exemples rapides de comportement :

  • ROUND(123.456, 2)123.46
  • ROUND(123.456, 0)123
  • ROUND(123.456, -2)100

Syntaxe pour les dates

ROUND(date, [format])
  • date (obligatoire) : la valeur de type DATE ou TIMESTAMP à arrondir.
  • format (optionnel) : l’unité d’arrondi. Valeurs courantes : 'YEAR', 'MONTH', 'DAY', 'HH', 'MI'. Par défaut, Oracle arrondit au jour le plus proche.

Exemples pratiques de ROUND en Oracle SQL

Exemple 1 – Calcul de commissions arrondies (contexte financier)

Imaginons une table VENDEURS contenant les ventes réalisées par chaque commercial. L’entreprise applique une commission de 8,5 % sur chaque vente. On souhaite afficher le montant de la commission arrondi à deux décimales.

-- Calcul des commissions arrondies à 2 décimales
SELECT
    nom_vendeur,
    montant_vente,
    ROUND(montant_vente * 0.085, 2) AS commission_arrondie
FROM vendeurs
WHERE statut = 'ACTIF'
ORDER BY montant_vente DESC;

Explication :

  • montant_vente * 0.085 calcule la commission brute, qui peut comporter de nombreuses décimales.
  • ROUND(..., 2) arrondit proprement le résultat à 2 chiffres après la virgule, ce qui est indispensable pour tout affichage ou traitement comptable.
  • Le résultat est un montant exploitable directement dans un bulletin de paie ou une facture.

Exemple 2 – Regroupement de commandes par mois (contexte analytique)

Dans une table COMMANDES, on souhaite analyser les ventes en regroupant les dates de commande par mois. La fonction ROUND sur une date permet d’arrondir chaque date au premier jour du mois correspondant.

-- Agrégation des commandes par mois avec ROUND sur les dates
SELECT
    ROUND(date_commande, 'MONTH') AS debut_mois,
    COUNT(*)                       AS nb_commandes,
    SUM(montant_total)             AS ca_mensuel
FROM commandes
WHERE EXTRACT(YEAR FROM date_commande) = 2024
GROUP BY ROUND(date_commande, 'MONTH')
ORDER BY debut_mois;

Explication :

  • ROUND(date_commande, 'MONTH') arrondit chaque date au 1er du mois si la commande a été passée avant le 16, ou au 1er du mois suivant à partir du 16.
  • Ce regroupement permet d’obtenir une vision mensuelle du chiffre d’affaires sans avoir à manipuler des fonctions de troncature complexes.
  • Attention : si vous souhaitez un regroupement strict au début du mois sans arrondi, préférez TRUNC(date_commande, 'MONTH').
Publicité

Erreurs courantes avec la fonction ROUND Oracle

Erreur : confondre ROUND et TRUNC pour les dates

Une confusion très fréquente consiste à utiliser ROUND à la place de TRUNC lorsque l’on souhaite tronquer une date au début d’une période, sans arrondi.

Problème :

-- Intention : obtenir toutes les commandes du mois de juillet 2024
-- Erreur : ROUND peut décaler certaines dates au mois suivant
SELECT *
FROM commandes
WHERE ROUND(date_commande, 'MONTH') = DATE '2024-07-01';

Avec ROUND, une commande passée le 20 juillet 2024 sera arrondie au 1er août 2024 et sera donc exclue du résultat alors qu’elle appartient bien à juillet.

Solution : Utilisez TRUNC pour un filtrage par période sans risque d’arrondi non désiré :

-- Bonne pratique : utiliser TRUNC pour tronquer sans arrondir
SELECT *
FROM commandes
WHERE TRUNC(date_commande, 'MONTH') = DATE '2024-07-01';

La règle est simple : utilisez ROUND quand vous avez besoin d’un arrondi mathématique, et TRUNC quand vous souhaitez simplement supprimer les unités inférieures sans arrondi.

Résumé de la fonction ROUND Oracle

Point cléDétail
FonctionROUND
TypeNumérique et Date
Syntaxe numériqueROUND(nombre, décimales)
Syntaxe dateROUND(date, format)
Décimales négativesArrondi à gauche de la virgule (dizaines, centaines…)
Valeur par défaut0 décimale (arrondi à l’entier)
Règle d’arrondi≥ 5 → arrondi supérieur ; < 5 → troncature
Différence avec TRUNCTRUNC coupe sans arrondir, ROUND applique la règle mathématique

Bonnes pratiques Oracle

  1. Toujours spécifier le nombre de décimales dans vos requêtes de production, même lorsque la valeur est 0. Cela rend le code plus lisible et évite les comportements implicites difficiles à détecter lors d’une maintenance.
  2. Préférez TRUNC à ROUND pour les filtres sur les dates dans les clauses WHERE et GROUP BY : le comportement de TRUNC est prévisible et linéaire, ce qui élimine tout risque d’erreur d’analyse liée à l’arrondi d’une date en fin de période.

Aller plus loin avec les fonctions Oracle

Pour approfondir votre maîtrise des fonctions Oracle SQL et compléter vos connaissances sur la gestion des nombres et des dates, voici trois sujets fortement recommandés :

  • Fonction TRUNC Oracle : découvrez comment tronquer des nombres et des dates sans arrondi, et comprenez les différences clés avec ROUND dans vos requêtes de filtrage.
  • Fonctions CEIL et FLOOR Oracle : apprenez à arrondir systématiquement à l’entier supérieur ou inférieur, deux alternatives essentielles à ROUND pour certains calculs métier.
  • Fonction TO_CHAR Oracle : maîtrisez le formatage des nombres et des dates en chaînes de caractères pour présenter vos résultats arrondis dans des rapports ou des interfaces utilisateur.

Sur le même thème

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Publicité