Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 14/05/2012 16:40:53
- yoruichiy
- Membre
somme de valeurs précédentes et courantes
bonjour,
je débute en sql,
je dois faire la somme de différences de dates en minutes entre la date n-1 et la date n jusqu'à ce que le champ valeur soit égal à 0 .
on m'a conseillé d'utiliser les curseurs, je ne sais pas les utiliser, g laborieusement créer cette requête qui ne renvoie pas d'erreur:
je ne peux pas créer d'autres variables dans le déclare sans avoir d'erreurs pourquoi?
BEGIN WORK;
DECLARE
value CURSOR FOR SELECT * FROM tds_archivedtemporaryparamvalue_ddo
order by devicedate;
FETCH FORWARD 5 IN value;
CLOSE value;
--COMMIT WORK;
END WORK;
la tentative de déclaration de variable seule ne marche pas je ne trouve pas pourquoi sur aucune source internet:
BEGIN WORK;
DECLARE
firstvalue timestamp;
--firstValue :=select min(devicedate) from tds_archivedtemporaryparamvalue_ddo where value=1;
--COMMIT WORK;
END WORK;
ERREUR: erreur de syntaxe sur ou près de « timestamp »
État SQL :42601
Caractère : 34
merci par avance
Hors ligne
#2 14/05/2012 16:57:17
- rjuju
- Administrateur
Re : somme de valeurs précédentes et courantes
Bonjour.
Je ne comprend pas du tout votre question sur la somme de différences. Que voulez-vous faire exactement ?
Sinon, vous ne faites que des instructions sql et non pas une procédure stockée pl/pgsql.
Pour la base des procédures stockées, je vous conseillerai de regarder cette documentation : http://docs.postgresqlfr.org/9.1/plpgsql.html
Julien.
https://rjuju.github.io/
Hors ligne
#3 14/05/2012 17:04:29
- yoruichiy
- Membre
Re : somme de valeurs précédentes et courantes
en fait g une table avec des dates, une valeur égale à 0 ou 1, les dates sont triées par ordre croissant
je dois faire : somme(date_courante - date_précedente) tant que valeur_courante =1
mais je c pas du tout comment le faire en sql
Hors ligne
#4 14/05/2012 17:26:38
- rjuju
- Administrateur
Re : somme de valeurs précédentes et courantes
Si vous êtes en version 8.4 ou supérieure, vous pouvez utiliser les CTE et le fonctions window pour cela.
Une requête de ce genre devrait marcher :
WITH dte_max AS (SELECT min(devicedate) as dte
FROM tds_archivedtemporaryparamvalue_ddo
WHERE value = 0)
SELECT sum(dte-lag) FROM (
SELECT devicedate,lag(dte) over()
FROM tds_archivedtemporaryparamvalue_ddo
WHERE devicedate < (SELECT dte FROM dte_max)
)src
Julien.
https://rjuju.github.io/
Hors ligne
#5 14/05/2012 17:34:25
- yoruichiy
- Membre
Re : somme de valeurs précédentes et courantes
merci
Hors ligne
Pages : 1