176
Chapitre 7 • Applications avancées en SQL
7.3.3 La projection 6 temporelle
Supposons que nous ne soyons intéressés que par l’évolution de la catégorie des
clients. Une première formulation peut être proposée :
select NCLI, debut, fin, CAT
from
H_CLIENT

... mais le résultat est inadéquat (les lignes 2 et 3, représentant une seule période,
devraient être fusionnées) :
Pour fusionner les périodes consécutives de même valeur de CAT pour le même
client 7 , on pourrait écrire ceci :
select NCLI, min(debut), max(fin), CAT
from
H_CLIENT
group by NCLI, CAT

On voit clairement que si on résout le problème ci-dessus (ligne 2), on en introduit
un autre : l’état apparaît comme étant
inclus dans , ce qui est manifestement incorrect, les états d’un client devant être consécutifs.
Le concept clé qui nous permettra de résoudre le problème est celui de suite maximale, pour un même client, d'états consécutifs de même valeur de CAT. Cette suite
6. On appelle projection d’une table l’opérateur par lequel seules certaines colonnes d’une table
sont conservées. Considérant la table T(A,B,C,D), la formulation SQL de la projection de T
sur A et B est la suivante : select distinct A,B from T.
NCLI
debut
fin
C A T
C400
C400
C400
C400
F011
F011
F011
03-11-1998
18-05-2000
26-12-2000
07-04-2001
08-10-1997
12-03-2000
15-03-2001
18-05-2000
26-12-2000
07-04-2001
01-01-3000
12-03-2000
15-03-2001
22-07-2001
B1
B2
B2
C1
B1
B2
B1
7. Cet opérateur de fusion de périodes porte le nom anglais de coalescing.
NCLI
debut
fin
C A T
C400
C400
C400
F011
F011
03-11-1998
18-05-2000
07-04-2001
08-10-1997
12-03-2000
18-05-2000
07-04-2001
01-01-3000
22-07-2001
15-03-2001
B1
B2
C1
B1
B2
Précédent

- 176/436

Suivant