Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 29/01/2007, 13h51   #1
Nouveau Membre du Club
 
Inscription : décembre 2002
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 49
Points : 35
Points : 35
Par défaut Pb pour agréger des dates

Bonjour,

J'ai stocké des durées dans un champ typé TimeStamp (duree). Dans une requête, je tente de faire la somme de ces durées par groupes:

Select Groupes, SUM(duree:: interval)
From...
Join...
Group By Groupes, duree

Comme la somme de TimeStamp n'est pas acceptée, j'ai tenté un cast vers un type 'interval' mais rien n'y fait. Comment s'y prend t-on pour agréger des heures dans PostGre ?

Merci d'avance.
__________________
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Dunsany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 18h09   #2
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Hello,

Dejà, tu a une erreur dans ta requete, "duree" ne doit pas etre dans le 'Group BY'.
Sinon, les champs de types 'interval' correspondent à un nombre de secondes.
Tu devrai donc pouvoir faire :
Code :
1
2
3
4
SELECT Groupes, SUM(duree:: integer)::interval
FROM...
JOIN...
GROUP BY Groupes
Citation:
Comment s'y prend t-on pour agréger des heures dans PostGre ?
Aggreger des heures? tu veux dire quoi précisément? Aggréger par heure (par tranche d'une heure), faire la somme des temps écoulés ? etc ...
Les caculs sur les heures sont toujours un peu bordéliques, exprime le plus précisément possible ce dont tu as besoin
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 18h42   #3
Nouveau Membre du Club
 
Inscription : décembre 2002
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 49
Points : 35
Points : 35
Merci déja de cette première réponse.

1/ j'ai testé ton typage mais j'obtiens ceci:
cannot cast type timestamp without time zone to integer

2/ je stocke des durées dans ce champ Timestamp. je n'exploite que la partie HH:MM:SS. Ce que je souhaite faire c'est un regroupement qui consolide en HH:MM (les secondes sont de toute façon toujours à 0).
__________________
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Dunsany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 18h59   #4
Nouveau Membre du Club
 
Inscription : décembre 2002
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 49
Points : 35
Points : 35
Ca passe comme ça (duree en timestamp):

SELECT Groupes, SUM(duree:: time)::interval
FROM...
JOIN...
GROUP BY Groupes
mais je pourrais pas dire pourquoi...
__________________
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Dunsany est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web