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 07/10/2011, 08h57   #1
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Par défaut Calculer moyenne sur une période

Bonjour,
Voila je dois calculer la moyenne d'offre publier sur une période. Mais j'ai aucune idée de comment réaliser se calcul avec MySql.

Par exemple sur la période du 1 au 6 Octobre j'ai :
Date de début / id_offre
2011-10-01 / 1
2011-10-01 / 2
2011-10-01 / 3
2011-10-03 / 4

se qui avec un papier et un crayon me donnerait.
Au 2011-10-01 j'ai 3 offres
Au 2011-10-02 j'ai 3 offres
Au 2011-10-03 j'ai 4 offres
Au 2011-10-04 j'ai 4 offres
Au 2011-10-05 j'ai 4 offres
Au 2011-10-06 j'ai 4 offres
Donc 3+3+4+4+4+4 = 22/6 jours = 3.66 Offres

La question est : Comment obtenir se résultat avec une requête Mysql.

D'avance merci pour votre aide.
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h03   #2
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 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Un petit cours de SQL sur les fonctions de calcul et de groupement me semble indispensable.
__________________
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 07/10/2011, 10h08   #3
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Essayes un truc dans ce genre
Code mysql :
1
2
3
4
5
6
SELECT AVG(SELECT COUNT(*) 
          FROM latable
          WHERE debut BETWEEN "2011-10-01" AND lt.debut)
          AS moyenne
FROM latable lt
WHERE lt.debut BETWEEN "2011-10-01" AND "2011-10-06"
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h54   #4
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Maljuna Kris,
J'ai une erreur de syntax après offre.date_debut dans le AVG.
Pourtant quand je les exécutes indépendamment elles fonctionnes.

Code :
1
2
3
4
5
6
7
8
SELECT AVG(SELECT COUNT(id_offre) 
           FROM offre 
           WHERE offre.date_debut 
           BETWEEN '2011-10-01' AND offre.date_debut AND offre.id_client = 4804) AS moyenne
FROM offre
WHERE offre.date_debut 
BETWEEN '2011-10-01' AND '2011-10-06' 
AND offre.id_client = 4804
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 11h28   #5
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Comme on utilise la même table dans la requête et la sous-requête, notamment pour corréler la sous-requête, il faut aliasser les noms de tables pour que MySQL s'y retrouve.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 11h36   #6
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Je ne suis pas sûr de comprendre...
D'après votre exemple "crayon", vous voulez générer une moyenne pour CHAQUE jour de la période que vous définissez ? Même si les offres ont déjà été comptabilisées la veille ?
Dans ce cas, il va falloir passer par une table "calendrier" pour générer les résultats.
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web