IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Groupement par DATE echantillonnage


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Groupement par DATE echantillonnage
    Bonjour,

    Je cherche à faire une requete pouvant effectué un echnatillonnage.
    J'ai une table du style:

    NOM;DUREE;DATE_DEBUT;DATE_FIN

    par exemple :
    Robert;252000;01/01/2008 02:00:00;03/01/2008

    je voudrait faire une requete qui me donne la liste des noms par jour du style
    NOM;DATE;Duree

    par exemple
    Robert;01/01/2008;n second
    Robert;02/01/2008;86400
    Robert;03/01/2008;86400


    Si quelqu'un a une idée je suis preneur

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Si vous avez une date de début et une date de fin qui peut être à cheval sur plusieurs jours, il est impossible de savoir sur le(s)quel(s) de ce(s) jour(s) la durée s'étend.

    Vos données ne vous permettent pas d'avoir le résultat que vous voulez.

    Ce n'est même pas un problème de SQL.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut j'ai du mal m'exprimer
    la durée est le nombre de seocnde entre DateDébut et DateFin....
    donc si j'ai une période du style

    Date début : 01/01/2008 02:00:00
    Date fin : 02/01/2008 10:00:00
    Durée : 115200

    je voudrai un resultat du style :
    01/01/2008 --> 79200 (22*3600 secondes)
    02/01/2008 --> 36000 (10*3600 secondes)

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Oui j'ai bien compris.

    Mais dans votre premier exemple :

    Robert;252000;01/01/2008 02:00:00;03/01/2008

    Où comptabilisez vous la durée ? 01/01/2008, 02/01/2008 ou 03/01/2008 ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    il faut prendre le second exemple pour comprendre

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Si votre SGBD le permet, créez une fonction utilisateur qui renvoie un jeu d'enregistrements. Passez lui votre durée et votre plage de date et la fonction devra vous renvoyer autant d'enregs qu'il y a de jours avec une durée calculée au prorata des heures de votre période dans chaque jour.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    je pensais que ce forum s'adressait a des utilisateur avertit voir des professionnels.....vu votre reponse je pense que le but du jeu est de faire des hit...avec des réponses a 1 cts. Allez amusez vous bien a poster.....je pense que pour mes question pro je le ferai ailleur......

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Désolé de mal avoir décortiqué vos exemples. Je pensais que vous étiez passés à côté de votre problème à cause de ma mauvaise lecture.

    Si vous n'avez pas de table calendrier, vous ne pourrez pas créer autant de ligne que vous aurez de jours sur chaque période.

    D'où ma suggestion d'utiliser une fonction de table valuée pour éclater pour votre période en autant de lignes que de jours qui la compose.

    Je ne pense pas que ce soit une mauvaise solution. Encore faut il que vos SGBD supporte les fonctions utilisateurs capable de retourner des tables.

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    SQL ne peut inventer des lignes qui ne sont pas dans une table...
    Dans le cas de la période 01/03/2008 à 03/03/2008, s'il n'existe pas de table calendrier permettant de connaitre le 02/03/2008, cette ligne ne pourra pas apparaitre dans le résultat d'une requête.

    A ce sujet, vous pouvez lire ceci : Le temps, sa mesure, ses calculs
    Citation Envoyé par SQLPro
    La plupart des SGBDR sont incapables de fournir une réponse correcte aux problématique de calculs de temps. Voici une étude et une solution à tout vos maux temporels !

Discussions similaires

  1. Groupement par date avec jointure
    Par morality59 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2013, 11h53
  2. Groupement par date
    Par calou_33 dans le forum SQL
    Réponses: 5
    Dernier message: 21/01/2011, 16h36
  3. Groupement par Date
    Par ecoinfo dans le forum Développement
    Réponses: 7
    Dernier message: 14/01/2011, 15h48
  4. pb groupement par date
    Par maysa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/05/2007, 09h43
  5. Groupement par dates
    Par Nico_57 dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/06/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo