Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je travaille sous CenOS 5.9 avec un moteur PostgreSQL 9.3.2.
J'ai la table suivante :
CREATE TABLE test(
id serial NOT NULL,
now timestamp with time zone NOT NULL,
size bigint NOT NULL,
CONSTRAINT pk_test PRIMARY KEY (id));
Je l'alimente de façon journalière (mais si j'ai commencé à l'alimenter un mercredi, je n'ai pas forcement de ligne pour le premier jour de la semaine).
Le champ size ne fait que cumuler de jour en jour, à la manière des stats PostgreSQL.
Je voudrai faire une requête qui me retourne la différence entre la size du dernier jour "alimenté" de la semaine dernière et la size du premier jour "alimenté" de la semaine dernière.
J'arrive bien à sélectionner les enregistrements de la semaine dernière :
SELECT * FROM test WHERE extract(week from now)=extract(week from current_date)-1 ORDER BY now DESC;
Cela me retourne par exemple :
5;"2015-04-12 00:01:01.587489+02";15988320440
4;"2015-04-11 00:01:01.446174+02";15959443640
3;"2015-04-10 00:01:02.15777+02";15798061240
2;"2015-04-09 00:01:02.160302+02";15676590264
1;"2015-04-08 00:01:01.655994+02";15561124024
Le problème est pour faire la différence entre premier et dernier jour.
J'ai regardé les fonctions window avec first_value et last_value mais je n'arrive pas à un résultat. Ce n'est peut-être pas la bonne technique.
Quelqu'un peut-il orienter mes recherches, svp ?
Dernière modification par mortimer.pw (16/04/2015 16:07:47)
Hors ligne
Bonjour,
J'ai finalement trouvé.
MA solution pour ceux que cela pourrait intéresser :
select size-(last_value(size) over(order by now desc rows between unbounded preceding and unbounded following))
FROM test
WHERE extract(week from now)=extract(week from current_date)-1
ORDER BY now desc limit 1;
Hors ligne
Pages : 1