Bonjour à tous,
Je viens sur le site, car malgré ma recherche dans mes connaissances SQL, je ne trouve pas la solution, voici mon problème, si quelqu'un peut me donner la solution ...
Je gère une table unique : TensionsMilli (plus de 40 millions de records), cette table contient les rubriques suivantes :
Chrono : Entier non signé sur 4 octets (Clé unique)
Data_Date : Date sur 8 (AAAAMMJJ)
Data_Heure : Heure sur 9 (HHMMSSLLL) LLL = millièmes de seconde
Tens_Demande : Réel sur 8 (2 décimales)
Tens_Disponible : Réel sur 8 (2 décimales)
DateHeureLLL : Chaîne sur 17 (clé unique composée de Data_Date + Data_Heure)
Je souhaite regrouper cette table par minute*1, minute*2, minute*3, etc. j'ai donc écrit la requête suivante pour la minute*1 :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT RPAD(SUBSTR(DateHeureLLL, 1, 12),14,'0') AS DateHeure, MAX(DISTINCT Tens_Demande) AS HautDemande, MIN(DISTINCT Tens_Demande) AS BasDemande, MAX(DISTINCT Tens_Disponible) AS HautDisponible, MIN(DISTINCT Tens_Disponible) AS BasDisponible, COUNT(*) AS Volume FROM TensionsMilli WHERE Data_Date >= '20120101' GROUP BY DateHeure ORDER BY DateHeure ASC
Cette requête me renvoie correctement les valeurs attendues, ainsi que le regroupement par minute. Là où je coince, c'est que j'aimerais connaître les valeurs des rubriques Tens_Demande et Tens_Disponible, à la fois au début de la minute, et à la fin de la minute, exemple :
La minute de 20120102 180000000 à la fin, soit 20120102 180059999 contient 76 records :
Je souhaite donc connaître les valeurs de Tens_Demande et Tens_Disponible du 1er record du groupe de cette minute, et ces mêmes valeurs du dernier record du groupe de la/les minutes concernées.
Un premier test sur les dates de 20120101 à 20130510 renvoie le résultat en 6 minutes pour 24,5 millions de records. Y a t-il un moyen d'accélérer le travail ?
Merci de votre aide,
LeTigre30
Partager