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

SQLite Discussion :

Problème accumulateur et filtrage par secondes.


Sujet :

SQLite

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème accumulateur et filtrage par secondes.
    Bonjour,
    je bosse actuellement sur un raspberry (rasbian) avec une database sqlite3.
    J'ai un premier programme python qui va écrire dans la database 'moves' des valeurs de types :

    timestamp dist
    2015-02-15 21:49:49   0.16
    2015-02-15 21:49:57   1.77
    2015-02-15 21:50:05   0.13
    2015-02-15 21:50:13   0.05
    2015-02-15 21:50:22   1.20

    Enfin, j'ai un deuxième programme qui lis ces valeurs et qui produis un gaphique sur une page html.

    J'aimerais enfait pouvoir accumuler les valeurs de telle sortes à avoir :

    2015-02-15 21:49:49   0.16
    2015-02-15 21:49:57   1.93
    2015-02-15 21:50:05   2
    2015-02-15 21:50:13   2.05
    2015-02-15 21:50:22   3.25

    (plus précisement avec une échelle de x secondes si possible, disons 10 secondes).

    j'avais pensé à un code type :

    SELECT timestamp, (SELECT SUM(dist) FROM moves GROUP BY ...) FROM moves WHERE timestamp> datetime('now','-1 hour') -- afiche sur 1 heure "

    Mais j'ai beaucoup de mal à utiliser correcment GROUP BY qui devrait donc me permettre à sélectionner les valeurs de dist et les sommers par tranche de 10 secondes ?

    Merci pour vos avis !

    Merci beaucoup

  2. #2
    Expert confirmé Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Points : 5 522
    Points
    5 522
    Par défaut
    Tu peux essayer un regroupement sur la division entière par 10 (nombre de secondes à grouper) de ton champ date converti au format unix (secondes depuis le 1/1/1970) de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT strftime('%s', timestamp) / 10 as grp, datetime((strftime('%s', timestamp) / 10) * 10, 'unixepoch') as heure, SUM(dist) 
    FROM moves 
    GROUP BY grp 
    WHERE timestamp> datetime('now','-1 hour')
    le calcul datetime((strftime('%s', timestamp) / 10) * 10, 'unixepoch') permet d'obtenir l'heure de début de chaque période de 10 secondes. Par exemple si timestamp est égal à 1424125713 (2015-02-16 22:28:33) alors strftime('%s', timestamp) / 10) vaut 142412571 et ((strftime('%s', timestamp) / 10) * 10 vaut 1424125710 (2015-02-16 22:28:30)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse !

    J'ai encore des conflits de style curs.execute ne permet que des commandes 'read-only', mais je pense que celà viens de mes tables.
    Je dois donc créer une table sqlite de type (timestamp DATETIME, dist NUMERIC, grp DATETIME, heure DATETIME) ?

    La table est utilisée préalablement dans un autre programme et j'aimerais la garder intacte, est-ce qu'il existe un moyen de transferer des données d'une table à l'autre dans une même database sqlite ?

    Par exemple j'aurais databaselog.db qui contient les tables moves1 (timestamp, dist) et moves2 (timestamp, dist, grp, heure) ?

    Dans tout les cas merci pour ta réponse qui me permettra de partir sur la bonne base

  4. #4
    Expert confirmé Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Points : 5 522
    Points
    5 522
    Par défaut
    Non, tu n'as pas besoin de créer une nouvelle table. Dans mon exemple, grp (critère de regroupement) et heure (affichage de la date et heure du début de période) sont des données calculées à partir de ton champ timestamp.

    Pour insérer des données d'une table dans une autre, quelque chose de ce genre devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO table2 (champ1,champ2,champ3)
    SELECT champ1,champ2,champ3 
    FROM table1
    WHERE condition

Discussions similaires

  1. Problème d'optimisation: Filtrage par critère
    Par boyzonman dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/06/2013, 10h46
  2. [WSS3] Problème filtrage par catégorie
    Par bledev dans le forum SharePoint
    Réponses: 0
    Dernier message: 19/02/2008, 11h39
  3. Requete : Problème de filtrage par date
    Par flamby6969 dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2007, 13h29
  4. Problème de filtrage par la date
    Par soso78 dans le forum IHM
    Réponses: 7
    Dernier message: 13/11/2007, 12h23
  5. Problème de nb d'images par seconde
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 17/04/2004, 10h37

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