Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2011, 23h03   #1
Invité de passage
 
Étudiant
Inscription : juin 2007
Messages : 3
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2007
Messages : 3
Points : 2
Points : 2
Par défaut Valeurs horaires plus proches de 0h, 1h, 2h etc

Bonsoir,

Voici mon problème :

Disons, que je dispose d'une table avec 3 champs : Date, Heure et Valeur
Je dispose d'un enregistrement toutes les 5 minutes (le début est asynchrone)

Exemple :

25/07/2011 00:01:56 1
25/07/2011 00:06:56 2
25/07/2011 00:11:56 3
25/07/2011 00:16:56 4
25/07/2011 00:21:56 5
25/07/2011 00:26:56 6
...
25/07/2011 01:01:56 7
25/07/2011 01:06:56 8
25/07/2011 01:11:56 9
25/07/2011 01:16:56 10
25/07/2011 01:21:56 11
25/07/2011 01:26:56 12
...

Sauriez-vous comment récupérer les valeurs les plus proches de 0h, 1h, 2h, 3h, 4, et ainsi de suite ? (24 valeurs par jour au max.)

Si j'ai "25/07/2011 00:56:56 7" et "25/07/2011 01:01:56 7" je prend "25/07/2011 01:01:56 7"

Un grand merci et bonne soirée !
jeremy02700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 09h38   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 565
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2005
Messages : 1 565
Points : 2 178
Points : 2 178
Une table des heure contenant de 0 à 23.
Une table des dates contenant tous les jours.

Une requête qui fait le produit cartésien de ces deux tables, une jointure sur votre table de valeurs. La condition de jointure sur la table de valeurs étant qu'aucune autre valeur n'est plus proche de l'heure de la table heure. La proximité horaire s'exprimant comme la valeur absolue de la différence entre l'heure de la valeur et l'heure de la table des heures.
vmolines est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 13h27   #3
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Si le SGBD a les fonctions de fenêtrage, ça doit être facile avec des partitions basées sur le temps arrondi à l'heure la plus proche. Il faut garder la 1ere ligne de chaque partition avec un tri sur le temps. Ca donnerait quelque chose du style
Code :
1
2
3
4
5
SELECT * FROM
 (SELECT date,heure,valeur, row_number() over
    (partition BY arrondi_heure(date,heure) ORDER BY date,heure) AS rn
 FROM latable)
 WHERE rn=1
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h32.


 
 
 
 
Partenaires

Hébergement Web