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

Langage SQL Discussion :

[Requête]Problème de moyenne


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Angath
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 140
    Points : 174
    Points
    174
    Par défaut [Requête]Problème de moyenne
    Bonjour je trace des courbes avec données stockées dans une table "MESURE" stockée dans un MS-SQL 2000

    Cette table ressemble à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Timestamp          | mesure1 | mesure 2| ...
    04/10/2005 16:00:00  10             20
    04/10/2005 16:01:00  11             21
    04/10/2005 16:02:00  12             22
    04/10/2005 16:03:00  13             23
    04/10/2005 16:04:00  14             24
    04/10/2005 16:05:00  15             25
    ....
    04/10/2005 17:05:00  5              45
    Pour le moment je trace tous les points sur une période choisie par l'utilisateur, donc j'ai une requête du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [Timestamp],mesure1
    FROM Mesure
    WHERE [Timestamp] between 'datedebut' and 'datefin'
    Puis je trace ma courbe avec le résultat de la requête

    Mon client souhaite pouvoir échantilloner ces courbes à sa guise, à savoir
    remonter une valeur toutes les 5 min par exemple, les valeurs affichées devant être la moyenne des valeurs sur cette période.

    J'ai bien penser à la fonction AVG, mais je vois pas comment lui dire de faire la moyenne des valeurs sur 5 min puis passer au 5 minutes suivantes

    Une idée ?

    D'avance merci

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Date, Heure, Minute / 5, AVG(laColonne)
    FROM laTable
    GROUP BY Date, Heure, Minute / 5
    Où Minute / 5 est la division entière, mais ne connaissant pas ton SGBDR, ni s'il respecte la norme, je ne peux pas t'aider à extraire la date, l'heure, les minutes, ni à faire une division entière...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Bonjour je trace des courbes avec données stockées dans une table "MESURE" stockée dans un MS-SQL 2000
    non ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    N'empêche, que comme je ne connais pas MS-SQLServer 2000, je ne peux pas t'aider à extraire la date, l'heure, les minutes, ni à faire une division entière...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Sous MS SQL Server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE TABLE T_MESURE   (DH DATETIME, MESURE1 FLOAT, MESURE2 FLOAT)
     
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:00:00',  10,             20)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:01:00',  11,             21)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:02:00',  12,             22)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:03:00',  13,             23)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:04:00',  14,             24)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:05:00',  15,             25)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:06:00',  16,             23)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:07:00',  14,             22)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:08:00',  13,             22)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:09:00',  13,             23)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:10:00',  14,             24)
    INSERT INTO T_MESURE VALUES ('04/10/2005 16:11:00',  15,             25)
     
    SELECT AVG(MESURE1), AVG(MESURE2), CAST(CAST(TRANCHE AS FLOAT) / 1440 AS DATETIME) AS DH
    FROM   (SELECT *, CAST(ROUND(CAST(DH AS FLOAT) * 1440.0, 0) AS INTEGER) / 5 AS TRANCHE
            FROM   T_MESURE) T
    GROUP BY TRANCHE
    Bien entendu paramétrer le 5 en tant que variable d'une proc stock.

    Seul in convénient, les résultats seront légèrement faux (à 3 millièmes de seconde pres. Il vaudrait mieux dans votre cas avoir stocké le temps sous forme de minute ou de seconde décimale.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre habitué Avatar de Angath
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 140
    Points : 174
    Points
    174
    Par défaut
    Merçi beaucoup

    Ca ressemble fortement à ce qu'il me faut à un détail prés :
    Le résultat de votre requête donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Expr1            Expr2           DH
    12                22            25/02/1921 12:48:00 
    14,2              23            25/02/1921 12:49:00 
    14,5              24,5          25/02/1921 12:50:00
    Les dates obtenues sont un peu veillotes
    Mais j'ai compris le principe je devrais m'en sortir
    Merci encore

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    J'ai effectivement oublié de remultiplier par 5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT AVG(MESURE1), AVG(MESURE2), CAST(CAST(TRANCHE * 5 AS FLOAT)/ 1440 AS DATETIME) AS DH
    FROM   (SELECT *, CAST(ROUND(CAST(DH AS FLOAT) * 1440.0, 0) AS INTEGER) / 5 AS TRANCHE
            FROM   T_MESURE) T
    GROUP BY TRANCHE
    Mea culpa !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre habitué Avatar de Angath
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 140
    Points : 174
    Points
    174
    Par défaut
    J'avais vu le coup du *5 , je m'améliore en SQL lol

    Encore merçi

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

Discussions similaires

  1. requête problème d'occurence
    Par devalender dans le forum SQL
    Réponses: 4
    Dernier message: 05/06/2006, 13h08
  2. Problème de moyenne
    Par a.hbn dans le forum Access
    Réponses: 11
    Dernier message: 10/05/2006, 11h25
  3. [Requête] Problème avec Distinct
    Par Gamleur84 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/02/2006, 01h40
  4. [Requête] Problème INSERT INTO
    Par lerico dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 10/01/2006, 17h12
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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