Retour à la liste des articles Articles
6 minutes de lecture

Comment fonctionne l'opérateur de division en SQL

L'opérateur de division en SQL est utilisé pour diviser une expression ou un nombre par un autre. Cet article vous montrera exactement comment l'utiliser et les erreurs courantes à éviter en cours de route.

L'opérateur de division en SQL est considéré comme un opérateur arithmétique. Les opérateurs arithmétiques sont l'addition (+), la soustraction (-), la multiplication (*), la division (/) et le modulus (%). Cet article se concentre sur l'opérateur de division et présente les règles à suivre ainsi que les erreurs courantes à éviter lorsque vous essayez de diviser en SQL.

La syntaxe de l'opérateur de division en SQL est la suivante :

SELECT <expression> / <expression>
FROM table
[WHERE expression]

Notez que l'inclusion de la clause WHERE est entièrement facultative. L'opérateur de division peut être utilisé partout où il y a une expression. Cela signifie que vous pouvez utiliser l'opérateur de division SQL avec :

  • SELECT.
  • WHERE.
  • HAVING.
  • ORDER BY.
  • Ou comme partie d'une fonction.

Si ces expressions vous causent une quelconque confusion, pensez au cours La pratique du SQL de LearnSQL.com. Il s'agit d'une méthode efficace et amusante pour aiguiser vos compétences en SQL.

L'exemple le plus simple de l'opérateur de division est le suivant :

SELECT 10 / 2                                               

Vous pouvez exécuter cette requête et elle donnera un résultat - dans ce cas, 5. Cependant, il est plus probable que vous travailliez avec des entiers qui se trouvent dans des colonnes faisant partie de vos tables de base de données.

Prenons un tel exemple. Nous allons utiliser une table appelée produits, qui contient des aliments typiques ainsi que leur prix et quantite.

produits

articleprixquantite
Oeufs1512
Lait34
Farine52
Pain103

Appliquons l'opérateur de division à une colonne entière de notre table et observons son effet. Considérons la requête SQL suivante :

SELECT quantite, quantite / 2 AS 'resultat'
FROM niveaux_de_produits

Avec cette requête, nous sélectionnons la colonne quantite puis nous affichons le résultat de la division de la valeur quantite dans notre colonne resultat qui contient le résultat de quantite / 2. Exécutons cette requête et observons les résultats :

QuantitéRésultat
126
42
21
31

Les résultats ressemblent à ce que nous attendions, sauf pour la dernière ligne. N'est-ce pas 3 / 2 = 1,5 ? ! Le résultat affiché par SQL Server montre une valeur de 1. Selon la variante de SQL que vous utilisez, l'opérateur de division peut traiter la division de nombres entiers différemment. Nous allons éclaircir ce point dans la section suivante !

Comment les nombres entiers sont-ils divisés en SQL ?

Les divisions d'entiers peuvent se comporter différemment selon le système de gestion de bases de données SQL que vous avez choisi. Les utilisateurs de MySQL et d'Oracle peuvent s'attendre à ce que le nombre réel soit affiché avec le type de données float, par exemple, 3 / 2 = 1,5.

Cependant, pour les utilisateurs de SQL Server et PostgreSQL, la division des nombres entiers est plus complexe. Vous devrez vous rappeler certaines règles lors de la division de nombres qui ne sont pas des nombres entiers. Reprenons l'exemple précédent :

SELECT 3 / 2;

Lorsqu'elle est exécutée dans SQL Server ou PostgreSQL, le résultat de cette requête est 1, alors que la plupart des utilisateurs s'attendraient à 1,5. Que se passe-t-il ici ? L'opérateur de division ne traite que la partie entière du résultat lorsqu'il divise deux entiers. Le résultat obtenu est appelé le quotient. Le reste n'est pas traité. Dans le cas de la division de deux nombres entiers, le résultat sera le nombre de fois qu'un nombre est contenu dans un autre, sous sa forme d'entier.

Considérez ces exemples dans SQL Server ou PostgreSQL :

Requête de divisionRésultat
SELECT 10 / 33
SELECT 5 / 22
SELECT 11 / 61

Changer les opérandes en un nombre décimal ou à virgule flottante

Cela ne peut être fait que si l'opération de division particulière le permet. Si deux noms de colonnes sont impliqués, cette méthode ne sera pas possible ; utilisez plutôt la méthode CAST/CONVERT décrite ci-dessous. Vous devez être en mesure d'accéder directement à l'un des nombres. L'utilisation de cette méthode est simple : il suffit de modifier l'un ou les deux opérandes :

Requête de divisionRésultat
SELECT 10.0 / 33.333333
SELECT 5 / 2.02.5
SELECT 11.0 / 6.01.833333

Nous pouvons également appliquer cette méthode à notre exemple précédent produits. Nous devons mettre à jour notre requête de la manière suivante :

SELECT quantite, quantite / 2.0 AS 'resultat'
FROM niveaux_de_produits

L'exécution de cette requête produit un ensemble de résultats similaire au précédent, avec une différence essentielle.

QuantitéRésultat
126.00000
42.00000
21.00000
31.50000

Cette méthode est idéale si nous pouvons accéder à l'un des opérandes et le modifier directement. Cependant, ce n'est pas toujours le cas.

Utilisation de CAST ou CONVERT sur des colonnes

Imaginons que nous divisions la valeur de la colonne prix par la colonne quantité pour un article particulier. Notre requête ressemblerait à ceci :

SELECT prix / quantite
FROM produits
WHERE article = 'Farine'

L'exécution de cette requête donne un résultat de 2 ; il s'agit d'un scénario classique de division d'un nombre entier. Contournons ce problème en utilisant CAST sur l'une de nos colonnes.

Nous devons mettre à jour notre requête de la façon suivante :

SELECT CAST(prix AS DECIMAL(7,2)) / quantite AS 'CAST(prix)/quantite'
FROM produits
WHERE article = 'Farine'

Notez que vous pouvez également utiliser CONVERT au lieu de CAST. Pour en savoir plus sur la conversion d'un nombre entier à l'aide de CAST et CONVERT, cliquez ici. L'exécution de cette requête donne un nouveau résultat :

CAST(prix)/quantite
2.50000

Nous y sommes ! L'opération CAST a été appliquée avec succès à la colonne prix, ce qui en fait un type de données décimal pour cette opération arithmétique. Notez que si l'expression arithmétique contient plus d'un opérateur, les opérateurs de multiplication et de division sont évalués en premier, suivis des opérateurs d'addition et de soustraction. Lorsque deux opérateurs ont la même priorité, l'expression est évaluée de gauche à droite.

Vous devez également être conscient de l'erreur SQL " division par zéro ", quel que soit le SGBD que vous utilisez. La division par zéro donne l'infini, ce que SQL n'autorise pas. Si vous le faites, un message d'erreur s'affiche. Cette page utile du livre de recettes SQL vous montre comment traiter l'erreur " division par zéro " en SQL. Consultez-la si vous êtes intéressé !

Diviser et conquérir avec l'opérateur de division SQL !

Dans cet article, nous avons plongé dans le grand bain en vous montrant les subtilités de l'utilisation de l'opérateur de division en SQL pour la division d'entiers. Nous avons appris comment gérer la division de nombres entiers pour chaque SGBD SQL, de SQL Server à MySQL. Nous avons également abordé la question de l'erreur SQL " division par zéro " et présenté des ressources qui vous permettront de gérer cette erreur de manière élégante.

Comme pour toute chose dans la vie, c'est en forgeant qu'on devient forgeron ! Si vous souhaitez renforcer vos compétences SQL par le biais de défis mensuels amusants et attrayants, pensez au défi SQL de ce mois-ci.