Bonjour à tous,
J'ai un petit soucis de compétences pour créer une requête SQL (d'ailleurs je ne suis pas certain que ça soit possible)
Voici ma requête actuelle : (le -0.94 est pour corriger un état de mes sondes que je n'ai pas pu "resetter")
Et le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT ROUND(MAX(`ConsoBureau-kWh`),2)-0.94 as `conso`, DATE_FORMAT(`timestamp`, "%d/%m/%Y") as `date` FROM `logs` WHERE `timestamp` > DATE_SUB(CURDATE(),INTERVAL 7 DAY) GROUP BY DAY(`timestamp`) ORDER BY `timestamp` ASC
Mon problème est d'arriver à avoir une nouvelle colonne qui contient la valeur du jour moins celle de la veille pour pouvoir sortir la consommation quotidienne.conso date
0.52 17/07/2015
0.55 18/07/2015
0.77 19/07/2015
3.72 20/07/2015
5.93 21/07/2015
8.81 22/07/2015
Soit :
22/07 = 2.88
21/07 = 2.21
20/07 = 2.95
etc.
De plus, ma précédente requête, un peu lourde je l'admets, était ceci :
Elle devrait me donner les mêmes chiffres que la première non ? parce que j'ai ces résultats :
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 SELECT ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE()) ) AS `max1`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-1 ) AS `max2`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-2 ) AS `max3`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-3 ) AS `max4`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-4 ) AS `max5`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-5 ) AS `max6`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-6 ) AS `max7`, ( SELECT ROUND(MAX(`ConsoBureau-kWh`),3)-0.94 FROM `logs` WHERE DATE(`timestamp`) = DATE(CURDATE())-7 ) AS `max8`, ( DATE_FORMAT(DATE(CURDATE()), "%d/%m/%Y") ) AS `date1`, ( DATE_FORMAT(DATE(CURDATE())-1, "%d/%m/%Y") ) AS `date2`, ( DATE_FORMAT(DATE(CURDATE())-2, "%d/%m/%Y") ) AS `date3`, ( DATE_FORMAT(DATE(CURDATE())-3, "%d/%m/%Y") ) AS `date4`, ( DATE_FORMAT(DATE(CURDATE())-4, "%d/%m/%Y") ) AS `date5`, ( DATE_FORMAT(DATE(CURDATE())-5, "%d/%m/%Y") ) AS `date6`, ( DATE_FORMAT(DATE(CURDATE())-6, "%d/%m/%Y") ) AS `date7`, ( DATE_FORMAT(DATE(CURDATE())-7, "%d/%m/%Y") ) AS `date8`
max1 max2 max3 max4 max5 max6 max7 max8 date1 date2 date3 date4 date5 date6 date7 date8 8.820 5.930 3.720 0.770 0.550 0.520 NULL NULL 22/07/2015 21/07/2015 20/07/2015 19/07/2015 18/07/2015 17/07/2015 16/07/2015 15/07/2015
Donc du coup, la question est de savoir quelle est celle qui est censée me donner la bonne valeur ? Et si je peux obtenir ma consommation quotidienne avec l'une ou l'autre (dépend de ce qui est le mieux pour MySQL sachant que j'ai un enregistrement par minute dans cette table)
EDIT : la structure des champs en question :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 -- -- Structure de la table `logs` -- CREATE TABLE IF NOT EXISTS `logs` ( `id` int(4) NOT NULL AUTO_INCREMENT, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `ConsoBureau-kWh` float NOT NULL, PRIMARY KEY (`id`), KEY `timestamp` (`timestamp`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8758 ;![]()





Répondre avec citation







Partager