PostgreSQL La base de donnees la plus sophistiquee au monde.

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

support:trucs_et_astuces:filtrer_des_tuples_a_intervalle_temporel_regulier [2008/10/15 16:50] (Version actuelle)
ioguix créée
Ligne 1: Ligne 1:
 +====== Filtrer des tuples à intervalle temporel régulier ======
  
 +===== Conditions préalables =====
 +
 +Imaginons une table contenant plusieurs colonnes dont une est une estampille. Par exemple la table mesures :
 +
 +<code sql>
 +CREATE TABLE mesures (
 +     ​estampille TIMESTAMP WITH TIMEZONE PRIMARY KEY,
 +     ​valeur DOUBLE PRECISION);
 +</​code>​
 +
 +Nous pouvons imaginer que les données sont temporellement réparties uniformément dans le temps (une donnée toutes les minutes par exemple).
 +
 +===== Cas d'​utilisation =====
 +
 +On souhaite avoir les mesures entre deux dates en échantillonnant les données présentes dans la table mesures avec un intervalle régulier supérieur à la répartition initiale de la mesure (par exemple toutes les 5 minutes).
 +
 +===== Requête =====
 +
 +Nous allons utiliser la fonction EXTRACT avec comme argument EPOCH pour extraire le nombre de secondes écoulées depuis le 1er Janvier 1970 à minuit GMT sur l'​estampille de chaque ligne. Nous pourrons ensuite utiliser la fonction modulo (%) pour fixer déterminer si la ligne est sélectionnable ou non. 
 +
 +<code sql>
 +SELECT ​
 + ​* ​
 +FROM 
 + ​mesures
 +WHERE
 + ​estampille BETWEEN CURRENT_TIMESTAMP - '1 day'::​INTERVAL AND CURRENT_TIMESTAMP
 +AND
 + ( (EXTRACT(EPOCH FROM estampille)::​INTEGER ) % (5 * 60) ) = 0;
 +</​code>​
 +
 +Ainsi chaque fois que la date EPOCH sera un multiple de 5*60 secondes (5 minutes) le modulo sera égal à 0 et notre ligne sera sélectionnée.
 +
 +-- \\
 +Jean-Christophe Arnu le 15/09/2006
 
support/trucs_et_astuces/filtrer_des_tuples_a_intervalle_temporel_regulier.txt · Dernière modification: 2008/10/15 16:50 par ioguix