
null
—
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.46ROUND(123.456, 0)→123ROUND(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.085calcule 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').
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 |
|---|---|
| Fonction | ROUND |
| Type | Numérique et Date |
| Syntaxe numérique | ROUND(nombre, décimales) |
| Syntaxe date | ROUND(date, format) |
| Décimales négatives | Arrondi à gauche de la virgule (dizaines, centaines…) |
| Valeur par défaut | 0 décimale (arrondi à l’entier) |
| Règle d’arrondi | ≥ 5 → arrondi supérieur ; < 5 → troncature |
| Différence avec TRUNC | TRUNC coupe sans arrondir, ROUND applique la règle mathématique |
Bonnes pratiques Oracle
- 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.
- 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
- ROW_NUMBER Oracle : fonction analytique SQL expliquée
- MONTHS_BETWEEN Oracle : calcul de mois entre deux dates
- LAST_DAY Oracle : Fonction SQL pour les dates
- TRUNC Oracle : Tronquer des dates et nombres SQL
- LAG Oracle SQL : Fonction Analytique Expliquée
- ROUND Oracle : arrondir des nombres en SQL facilement
