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

Requêtes MySQL Discussion :

Somme de compteurs [MariaDB]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Somme de compteurs
    Bonjour,

    J'ai une table qui enregistre toutes les minutes 2 compteurs. Je voudrais extraire le premier et dernier enregistrement de chaque jour pour avoir la valeur consommée par jour de mes 2 compteurs.
    Ma table se compose d'une colonne 'Horodatage' type Datetime, un premier compteur 'HCHC' et un deuxieme 'HCHP' (heures creuse et heures pleines).
    Merci

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour FGTH40,
    Je propose de "caster" le champ datetime en date,
    et de regrouper les enregistrements par date en sélectionnant à chaque fois le min et le max des 2 compteurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select horodatage::date, min(HCHC),max(HCHC),min(HCHP),max(HCHP)
    from matable 
    groupe by 1
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse,
    J'ai du mal m'exprimer, en fait je souhaiterais effectuer la soustraction du max et min et d'afficher pour chaque date la valeur calculée.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Finalement j ai trouvé cette solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select	Horodatage,
    		max(HCHC) - min(HCHC) as Total_Heures_creuses,
                    max(HCHP) - min(HCHP) as Total Heures_Pleines
    from ma table
    group by Horodatage

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut FGTH40.

    La solution que vous proposée n'est pas conforme à votre demande.
    Rien n'indique que la dernière ligne du jour contient le compteur le plus grand.

    J'ai repris votre demande que je formule ainsi :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`          integer unsigned NOT NULL auto_increment primary key,
      `date`        date             NOT NULL,
      `time`        time             NOT NULL,
      `HCHC`        bigint unsigned  NOT NULL,
      `HCHP`        bigint unsigned  NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`date`,`time`,`HCHC`,`HCHP`) values
      ('2019-01-01', '00:00:10',  25,  30),
      ('2019-01-01', '01:00:15',  50,  60),
      ('2019-01-01', '03:00:20',  75,  90),
      ('2019-01-01', '05:00:25', 100, 120),
      ('2019-01-01', '07:00:30', 125, 150),
      ('2019-01-01', '09:00:35', 150, 180),
      ('2019-01-01', '11:00:40', 175, 210),
      ('2019-01-02', '14:00:00',  12,   7),
      ('2019-01-02', '15:00:00',  24,  14),
      ('2019-01-02', '16:00:00',  36,  21),
      ('2019-01-02', '17:00:00',  48,  28),
      ('2019-01-02', '18:00:00',  60,  35),
      ('2019-01-02', '19:00:00',  72,  42),
      ('2019-01-02', '20:00:00',  84,  49)
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+----------+------+------+
    | id | date       | time     | HCHC | HCHP |
    +----+------------+----------+------+------+
    |  1 | 2019-01-01 | 00:00:10 |   25 |   30 |
    |  2 | 2019-01-01 | 01:00:15 |   50 |   60 |
    |  3 | 2019-01-01 | 03:00:20 |   75 |   90 |
    |  4 | 2019-01-01 | 05:00:25 |  100 |  120 |
    |  5 | 2019-01-01 | 07:00:30 |  125 |  150 |
    |  6 | 2019-01-01 | 09:00:35 |  150 |  180 |
    |  7 | 2019-01-01 | 11:00:40 |  175 |  210 |
    |  8 | 2019-01-02 | 14:00:00 |   12 |    7 |
    |  9 | 2019-01-02 | 15:00:00 |   24 |   14 |
    | 10 | 2019-01-02 | 16:00:00 |   36 |   21 |
    | 11 | 2019-01-02 | 17:00:00 |   48 |   28 |
    | 12 | 2019-01-02 | 18:00:00 |   60 |   35 |
    | 13 | 2019-01-02 | 19:00:00 |   72 |   42 |
    | 14 | 2019-01-02 | 20:00:00 |   84 |   49 |
    +----+------------+----------+------+------+
    --------------
    select      *,
                t1.HCHC - t3.HCHC as diff_HCHC,
                t1.HCHP - t3.HCHP as diff_HCHP
     
          from  `test` as t1
     
    inner join  `test` as t3
            on  t3.`time` = ( select  min(t4.`time`)
                                from  `test` as t4
                               where  t4.`date` = t1.`date`
                        )
     
         where  t1.`time` = ( select  max(t2.`time`)
                            from  `test` as t2
                           where  t2.`date` = t1.`date`
                            )
    --------------
     
    +----+------------+----------+------+------+----+------------+----------+------+------+-----------+-----------+
    | id | date       | time     | HCHC | HCHP | id | date       | time     | HCHC | HCHP | diff_HCHC | diff_HCHP |
    +----+------------+----------+------+------+----+------------+----------+------+------+-----------+-----------+
    |  7 | 2019-01-01 | 11:00:40 |  175 |  210 |  1 | 2019-01-01 | 00:00:10 |   25 |   30 |       150 |       180 |
    | 14 | 2019-01-02 | 20:00:00 |   84 |   49 |  8 | 2019-01-02 | 14:00:00 |   12 |    7 |        72 |        42 |
    +----+------------+----------+------+------+----+------------+----------+------+------+-----------+-----------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

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

Discussions similaires

  1. Création d'un compteur somme
    Par zz6918 dans le forum SAS Base
    Réponses: 0
    Dernier message: 01/02/2017, 12h35
  2. compteur avec la fonction somme
    Par mdimagho dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/08/2014, 18h05
  3. afficher la somme de N nombre + compteur
    Par adilovic dans le forum Assembleur
    Réponses: 0
    Dernier message: 21/05/2013, 22h21
  4. [XL-2000] somme par compteur mais avec conditions
    Par Rrrroh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/07/2010, 19h02
  5. Réponses: 2
    Dernier message: 20/06/2007, 19h04

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