IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Intervalles et positionnement d'objets sans date de fin [9.1]


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Intervalles et positionnement d'objets sans date de fin
    Bonjour à tous

    Une fois n'est pas coutume, je rencontre un souci de requête SQL sur des données un peu particulières.

    Je dispose de véhicules qui régulièrement sont positionnés à une certaine date via une table "vehicules_positions". On prend en fait un instantané de la position (il n'y a donc pas de date de fin). La structure est la suivante :

    Nom : Sans-titre-2.png
Affichages : 91
Taille : 21,4 Ko

    Dans mes informations (champ "informations") qui sont stockées en JSON, je récupère l'endroit où se trouve le véhicule :

    {"endroit":"A", "kilometres":12345} par exemple.

    Je souhaite pouvoir faire cela :

    Chaque jour d'un mois particulier (prenons décembre 2014 par exemple) je souhaite pouvoir dire si le véhicule se trouve à l'endroit A, et ne le récupérer que dans ce cas, sachant qu'on considère que le véhicule n'a pas bougé tant qu'une nouvelle prise de position n'est pas disponible.

    Pour récupérer l'endroit où est positionné le véhicule à une date donnée (dans ce cas le 31/12/2014 à 23:59:59), je procède comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH maxposition AS(
    	SELECT vehicule, MAX(id) AS id_max 
    	FROM vehicules_positions 
    	WHERE vehicule=2479 AND date < 1420066799  //Cette date correspond au 31/12/2014 à  23:59:59
    	GROUP BY vehicule
    ) 
     
    SELECT mp.vehicule, mp.id_max, trim(both '"' from (p.informations::json->'endroit')::text) AS endroit 
    	FROM maxposition mp 
    	LEFT JOIN vehicules_positions p ON mp.id_max=p.id
    Mon problème étant de pouvoir faire cela dynamiquement pour chaque jour du mois, en étant le plus performant possible (j'ai une quantité assez importante de positions, plusieurs millions d'enregistrements).

    Je génère donc une série listant tous mes jours du mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (generate_series('2014-12-01', '2014-12-31', '1 day'::interval))::date AS date_du_jour
    Je sèche maintenant complètement pour joindre mes positions maximales pour chaque jour du mois.

    Auriez-vous la gentillesse de m'aider SVP ?

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Votre problème c'est de convertir votre timestamp unix en postgresql.
    Et bien à la timezone près, c'est natif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT to_timestamp(1420066799);

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Mon problème était plus un souci de groupement plutôt que de timestamp. Je l'ai résolu en ajoutant une table de positions qui, à chaque mouvement, enregistre la position du véhicule. Cela m'évite de la recalculer à chaque fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sérialisation d'objets sans Boost
    Par Alp dans le forum Boost
    Réponses: 7
    Dernier message: 24/09/2006, 11h43
  2. Réponses: 5
    Dernier message: 16/06/2006, 11h50
  3. conserver ma liste d'objets sans Pointeur Null ...
    Par comme de bien entendu dans le forum Général Java
    Réponses: 8
    Dernier message: 24/03/2006, 11h55
  4. Trier des objets sans Comparable
    Par Shabata dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 13/03/2006, 13h55
  5. [CSS] positionner un objet
    Par car dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/08/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo