Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 21h52   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 1
Points : 1
Par défaut Calcul de la production solaire journalière

Bonjour,

Je viens vers vous car j'enregistre dans une base MySql toutes les 10 minutes l'evolution de ma production solaire.
Je sais faire des choses simples en requete mais je ne trouve pas du tout comment faire une requete qui me donnerais comme résultat ma production de la journée ou pour le mois ou pour l'année.

Je pense qu'il faut s'appuyer sur le champ BASE de mon compteur car c'est la seule valeur qui evolue a chaque instant.

Voici mes colonnes et leurs formats:
DATE: 2011-03-18 11:39:35
BASE: 1519

Merci pour votre aide
lolo1878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 22h03   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 928
Points : 1 928
Et donc peux tu expliquer à quoi correspond "la production" par rapport à la colonne BASE ?

Un jeu de test plus conséquent (quelques lignes) et le résultat attendu seraient également bien venus pour aider.

[edit]Si "la production" correspond à la somme de la BASE, alors il faut utiliser les fonctions de manipulations de date :
Code :
1
2
3
SELECT cast(la_date AS date) AS jour, sum(base)
  FROM la_table
 GROUP BY cast(la_date AS date)
Code :
1
2
3
SELECT extract('YEAR_MONTH' FROM la_date) AS YYYYMM, sum(base)
  FROM la_table
 GROUP BY extract('YEAR_MONTH' FROM la_date)
Code :
1
2
3
SELECT extract('YEAR' FROM la_date) AS YYYY, sum(base)
  FROM la_table
 GROUP BY extract('YEAR' FROM la_date)
J'utilise la_date car evidemment la colonne ne s'appele date qui est un mot clé du langage
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 22h43   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 1
Points : 1
merci pour ton aide.

Pour etre plus claire, la table Base contient l'index de mon compteur electrique, donc cette valeur augmente a chaque Wh produit.
La requete doit retrouver le premier index(base) du jour et le dernier pour me calculer le nombre de wh produit dans la journée.
Ci joint un export de ma bdd.
Seul la colonne Base donne des infos pour pouvoir etablir cette requete.
Fichiers attachés
Type de fichier : rar Production1.rar (380,1 Ko, 4 affichages)
lolo1878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 23h43   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 928
Points : 1 928
Dans le fichier fourni il y a effectivement une colonne qui débute par 17, 21, 52, 93...
J'imagine que c'est cette colonne que tu appelles BASE.
Pour avoir le MIN et le MAX par date (sans heures:minutes:secondes) il faut :
Code :
1
2
3
SELECT cast(la_date AS date) AS jour, min(base) AS min_base, max(base) AS max_base
  FROM la_table
 GROUP BY cast(la_date AS date)
Après si par calculer, tu entends max-min, ben il suffit de faire :
Code :
1
2
3
SELECT cast(la_date AS date) AS jour, max(base) - min(base) AS "Wh/jour"
  FROM la_table
 GROUP BY cast(la_date AS date)
PS: le cast(la_date AS date) permet d'occulter les heures:minutes:secondes
Code :
1
2
3
4
5
6
7
8
mysql> SELECT cast(now() AS date), now()
    -> ;
+---------------------+---------------------+
| cast(now() AS date) | now()               |
+---------------------+---------------------+
| 2011-12-29          | 2011-12-29 23:37:53 |
+---------------------+---------------------+
1 row IN SET (0.00 sec)
[edit] Bon en y réfléchissant le max(base) et min(base) sont probablement un peu des raccourcis fonctionnellemnt parlant, par contre comme cette colonne ne fait qu'augmenter je pense que l'approche reste vailde.
Si ça n'est pas le cas merci de continuer à détailler le problème.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 20h04   #5
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 1
Points : 1
Merci c'est ce que je voulais faire a une seule exception.
Je voulais simplement avoir le jour aujourd'hui.

ou dois-je mettre date= now()
lolo1878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 14h44   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Plutôt que now() qui est une fonction MySQL, il vaut mieux utiliser CURRENT_DATE qui est standard SQL.

Si tu ne veux que la valeur d'aujourd'hui, plus besoin de groupement :
Code :
1
2
3
SELECT max(base) - min(base) AS "Wh/jour"
FROM la_table
WHERE cast(la_date AS DATE) = CURRENT_DATE
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 15h04   #7
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 1
Points : 1
Merci pour votre aide.
La proposition est exactement ce que je voulais faire.
lolo1878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h21.


 
 
 
 
Partenaires

Hébergement Web