Division entière ou décimale
Évitez les résultats surprenants grâce à la conversion de type.
Division entière ou décimale est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Un résultat surprenant
Commençons par une énigme. À votre avis, que renvoie la requête suivante ?
Si vous vous attendez à 0.5, vous pourriez être surpris. Dans de nombreuses bases de données SQL, la division de deux entiers produit un résultat entier : la partie décimale est entièrement supprimée.
SELECT 1 / 2 AS result;La division entière expliquée
Lorsque les deux opérandes d'une division sont des entiers, SQL effectue une division entière. Le résultat est tronqué vers zéro : il n'y a pas d'arrondi, seule la partie entière est conservée.
Ainsi, 1 / 2 = 0, 7 / 3 = 2 et 9 / 4 = 2. La partie fractionnaire est supprimée sans indication.
SELECT 7 / 3 AS truncated_result;D'autres exemples de division entière
Voici plusieurs exemples de division entière dans une même requête. Remarquez que tous les résultats perdent leur partie décimale. Ce comportement est cohérent dans les expressions qui ne contiennent que des littéraux entiers ou des colonnes entières.
SELECT
10 / 4 AS ten_div_four,
9 / 2 AS nine_div_two,
1 / 3 AS one_div_three,
6 / 6 AS six_div_six;Corriger le problème avec CAST
La méthode la plus fiable pour forcer une division décimale consiste à convertir au moins un opérande en type décimal. CAST(value AS DECIMAL) ou CAST(value AS NUMERIC) indique à SQL de traiter le nombre comme une valeur à virgule flottante, afin que la division renvoie un résultat précis.
SELECT CAST(1 AS DECIMAL) / 2 AS result;Appliquer CAST aux deux côtés
Il suffit de convertir un seul côté de la division pour obtenir un résultat décimal : SQL convertira automatiquement l'autre opérande. Toutefois, convertir les deux côtés rend l'intention explicite et évite toute confusion lors de la relecture du code.
SELECT
CAST(7 AS DECIMAL) / CAST(3 AS DECIMAL) AS both_cast,
CAST(7 AS DECIMAL) / 3 AS one_cast;Utiliser un littéral décimal
Une autre astuce rapide consiste à écrire un opérande sous forme de littéral décimal en ajoutant .0. SQL interprète 1.0 comme un nombre décimal, ce qui force l'arithmétique décimale pour toute l'expression.
C'est pratique pour les requêtes ponctuelles, même si CAST est plus clair dans le code de production.
SELECT 1.0 / 2 AS decimal_result,
7.0 / 3 AS another_result;Piège concret : les données des colonnes
Le problème devient vraiment gênant lorsque vous travaillez avec des colonnes entières. Imaginez une table qui suit les objectifs de vente. La division de colonnes entières produit des résultats entiers : un taux de conversion de 0 alors qu'il devrait être de 0.75 !
CREATE TABLE sales_targets (
rep TEXT,
achieved INT,
target INT
);
INSERT INTO sales_targets VALUES
('Alice', 75, 100),
('Bob', 3, 4),
('Carol', 9, 10);
SELECT rep,
achieved / target AS wrong_rate
FROM sales_targets;Corriger la division entre colonnes
Appliquez CAST à la colonne du numérateur : la division renvoie alors le véritable taux de conversion sous forme décimale. Le dénominateur est automatiquement converti.
Multiplier ensuite par 100.0 donne un pourcentage, tout en conservant l'arithmétique décimale du début à la fin.
SELECT rep,
CAST(achieved AS DECIMAL) / target AS conversion_rate,
CAST(achieved AS DECIMAL) / target * 100.0 AS pct
FROM sales_targets;Contrôler la précision décimale
Vous pouvez contrôler le nombre de décimales stockées en indiquant la précision et l'échelle dans la conversion de type : DECIMAL(10, 2) signifie jusqu'à 10 chiffres au total, dont 2 après la virgule. C'est utile lorsque vous souhaitez obtenir un résultat propre et arrondi plutôt qu'un grand nombre de chiffres superflus en fin de valeur.
SELECT CAST(CAST(1 AS DECIMAL(10,4)) / 3 AS DECIMAL(10,2)) AS rounded_result;ROUND après la division
Vous pouvez parfois effectuer les calculs avec une précision maximale en interne, puis arrondir la valeur finale affichée. La fonction ROUND prend la valeur et le nombre de décimales à conserver.
Effectuez toujours d'abord la division, avec une arithmétique décimale, puis l'arrondi : n'arrondissez jamais avant de diviser.
SELECT
ROUND(CAST(1 AS DECIMAL) / 3, 4) AS four_places,
ROUND(CAST(1 AS DECIMAL) / 3, 2) AS two_places,
ROUND(CAST(1 AS DECIMAL) / 3, 0) AS zero_places;La division entière peut être utile
La division entière n'est pas toujours une erreur : elle correspond parfois exactement à ce dont vous avez besoin. Par exemple, convertir un nombre total de minutes en heures entières utilise volontairement la division entière. L'essentiel est de choisir délibérément la division entière ou décimale, plutôt que de l'appliquer par accident.
SELECT
137 / 60 AS full_hours,
137 % 60 AS remaining_minutes;Vérification rapide
Vérifiez votre compréhension de la division entière et de la division décimale en SQL.
Bilan de la leçon
Dans cette leçon, vous avez appris comment SQL gère la division entre entiers :
- Entier / Entier tronque le résultat : la partie décimale est perdue silencieusement.
- Utilisez
CAST(value AS DECIMAL)sur au moins un opérande pour forcer la division décimale. - Écrire un littéral décimal tel que
1.0force également l'expression à utiliser l'arithmétique décimale. - Utilisez
ROUNDaprès la division pour contrôler le nombre de décimales affichées. - La division entière est parfois intentionnelle, par exemple pour convertir des minutes en heures, mais faites-en toujours un choix conscient plutôt que de l'appliquer par accident.
Méfiez-vous de ce piège chaque fois que vous divisez des colonnes entières : c'est l'une des sources les plus courantes d'erreurs silencieuses difficiles à repérer dans les requêtes SQL.
Questions Fréquemment Posées
La leçon « Division entière ou décimale » est-elle gratuite ?
Oui — le texte complet de « Division entière ou décimale » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Division entière ou décimale » ?
Évitez les résultats surprenants grâce à la conversion de type. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Division entière ou décimale » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Arithmétique et opérateurs
- Arrondir et tronquer
- Division entière ou décimale
- Fonctions mathématiques utiles