SQL Faire un division dans sa requête

Plutôt que de lire des données et effectuer la division en code PHP par exemple, si vous avez la possibilité, faites directement la division dans la requêtes SQL

Il y a plusieurs façons de le faire, soit avec un sous requêtes (mais il semble qu’il y ait des problèmes de performance), mais c’est le plus simple à mon avis, ou alors il faut utiliser des variables SQL locales.

Méthode avec une sous requête

Le principe est de calculer le dénominateur (par exemple) dans une sous requête, et de le mettre au dénominateur de la requête principale

# la sous requête
SELECT count(*) FROM table1 WHERE type='toto'

# la requête principale 
SELECT count(*) FROM table1 WHERE type='tata'

#le tout
SELECT count(*)/
(SELECT count(*) FROM table1 WHERE type='toto')

 FROM table1 WHERE type='tata'

Attention à la division par zéro (la question à se poser systématiquement quand on a une division, ce doit être un réflexe), on utilise NULLIF

SELECT count(*)/
NULLIF((SELECT count(*) FROM table1 WHERE type='toto'),0)

 FROM table1 WHERE type='tata'

source du NULLIF

Méthode avec des variables

Vous aimerez aussi...