Bonjour à tous,

je suis actuellement en stage et j'ai besoin de réaliser un calcul en base 100 sur des données. Mon maître de stage souhaite optimiser au mieux l'application et donc traiter cela directement en sql.

Voici un exemple de données récupérées:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE VIEW graphe_1 AS SELECT nom_territoire, annee, statistique FROM "STAT_ANNEE" SA, "INDICATEUR" I, "FICHIER" F, "DONNEE" D, "TERRITOIRE" T
WHERE F.id_fichier=D.id_fichier
AND D.id_donnee=SA.id_donnee
AND I.id_indicateur=F.id_indicateur
AND SA.id_territoire=T.id_territoire
AND D.nom_donnee LIKE 'EN10 Consommation totale d''énergie par le résidentiel%'
Qui va me renvoyer par exemple:
"CENTRE";1990;2379
"CENTRE";1992;2808
"CENTRE";1995;2613
"CENTRE";1997;2747
"CENTRE";1999;2888
"CENTRE";2002;2758

Le calcul se fait ainsi:
- je choisi l'année de base, 2002, qui est donc égal a 100
- j'effectue le calcul suivant pour toutes les autres années:
1990 : 2379/2758*100 = 86.26
1992 : 2808/2758*100 = 101.81
1995 : 2613/2758*100 = 94.74
etc...

Au final, je souhaite un résultat du genre:
annee;base_100
1990;86.26
1992;101.81
1995;94.74
2002;100

Déjà, est-ce possible de réaliser ce genre de calcul en SQL?
Si oui, je me pose la question de savoir avec quelle méthode, une procédure, une fonction, un curseur (sachant que c'est lent), peut-être même une vue?

Je vous remercie d'avance pour vos réponses.