• [^] # Re: Solution

    Posté par . En réponse au message aide sur postgresql 7.2. Évalué à 2.

    A priori, ce n'est pas la meilleure façon de stocker l'information pour arriver à produire les résultats escomptés : il n'y a pas de lien évident de correspondance entre une heure de début et une heure de fin de fonctionnement dans ton système.
    Ce qu'il faut que tu connaisses :
    . la période globale à étudier
    . les enregistrements dans ta table pour cette même période (d'après ce que tu écris, cette information est absente), car tu ne stockes que l'heure.
    . la somme de toutes les périodes de "marche" soit la différence entre un état 'arrêt' et un état 'marche' (à priori, tu n'as pas identifier les enregistrements avec un serial, donc faudra faire avec les OID)
    . faire le rapport entre les 2, aucun problème.

    SQL sait faire plein de choses, PostgreSQL encore plus, avec les procédures stockées, etc. Tu peux tout à fait faire ce que tu recherches, mais ça va être pénible, et certainement pas faisable directement en SQL avec une requête dégueulasse :)

    Le design de ta base me parait attaquable. Plutôt que de stocker l'état de la machine à une heure donnée, il aurait été préférable de stocker le timestamp (en nombre de secondes depuis l'epoch par exemple) pour 2 champs : mise_en_marche et arrêt.
    id
    id_moteur
    ts_mise_en_marche
    ts_arret