162
Chapitre 6 • SQL avancé
Figure 6.3 - Table d’activités
On désire calculer la charge de chaque titulaire. Deux expressions sont possibles :
select TITULAIRE, sum(H_COURS) + sum(H_TP) as CHARGE
from
ACTIVITE
group by TITULAIRE
et
select TITULAIRE, sum(H_COURS + H_TP) as CHARGE
from
ACTIVITE
group by TITULAIRE
Ces deux expressions sont en principe équivalentes. Or, non seulement elles produisent des résultats différents, mais de plus ceux-ci sont inexacts, du moins selon
l’idée qu’on se fait de la charge d’une personne :
Il est inutile de soupçonner une quelconque erreur de calcul, SQL applique fidèlement les règles d’évaluation décrites ci-dessus.
De même, pour un prédicat P quelconque, les deux expressions ci-dessous ne
donnent pas nécessairement le même résultat, même si P est purement binaire (ne
peut être évalué qu’à true ou false) :
(select sum(H_COURS) from ACTIVITE)
(select sum(H_COURS) from ACTIVITE where P)
+ (select sum(H_COURS) from ACTIVITE where not P)
TITULAIRE
CHARGE
TITULAIRE
CHARGE
JLH
60
JLH
30
NHA
NHA
PHE
90
PHE
45
VEN
VEN
Précédent

- 162/436

Suivant