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 PostgreSQL Discussion :

Condition sur des dates


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut Condition sur des dates, rêquete complexe
    Bonjour,

    J'aimerai effectuer des moyennes de scores en fonction des mois.

    J'ai une table contenant des scores et les dates associées

    score - date
    genre "150 - 2009-10-05"
    "127 - 2009-10-05"
    "123 - 2009-10-06"



    Et j'aimerai donc effectuer la moyenne des scores du 5 octobre et du 6

    Mais pouvoir aussi effectuer des moyennes les autres jours sans pour autant toucher au code.
    Donc exclure les date = 2009-10-05.


    Et pouvoir éventuellement faire la même chose avec les années et les mois.


    Cordialement,

  2. #2
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Pour la moyenne par jour, c'est tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT AVG(score), date
    FROM maTable
    WHERE [Condition sur la date]
    GROUP BY date
    Cordialement,

    Arkhena

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Oui mais justement , j'aurais la moyenne des scores sur un jour particulier.

    La je voudrais pouvoir calculer la moyenne sur tous les jours en fait.


    avg ( select sum (score) from mytable where (condition)), un truc omme ça
    mais ça marche pas du tout .

    le problème c'est que "condtion" je ne sais pas la définir, puisqu'il peut y avoir des scores loggers pour plusieurs jours.

  4. #4
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Citation Envoyé par Moumoutte Voir le message
    Oui mais justement , j'aurais la moyenne des scores sur un jour particulier.
    Non, ça donnera la moyenne des scores pour chaque jour si aucune condition n'est donnée.

    Peut-être n'ai-je pas bien compris le problème.

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    EDIT:

    Bon je crois que je n'ai pas bien exposé les choses.

    Voilà, chaque jour, un utilisateur du site peut répondre à un certains nombres de questions.
    A chaque question répondue, je loggue un peu toutes les infos dont j'ai besoin dans une seule table en particulier, le score et la date a laquelle la question a été répondue.
    Donc, une ligne ne contient pas un score journalier, mais un score a une question précise.

    Ce que je voudrais aujourd'hui c'est construire une requête me permettant de récupérer les infos utiles et pouvoir faire des calculs à ma DB(mon php est déjà bien solicité).

    Récupérer la moyenne des scores journalier/mensuels/annuels.
    Le max score journalier/mensuel/annuel.

    J'imagine qu'il est possible par jointure et autre tricks de sql de pouvoir récupérer se genre d'infos, mais mes connaissances ne sont pas assez poussées et se limitent aux jointures diverses.

    Merci d'avance pour vos pistes de réflection.

    EDIT2:

    Finalement, la requete pourrait s'apparentait à une succession de requête dans une boucle for;

    La boucle for n'étant que pas du tout optimisée et n'étant pas élégante en sql, j'aimerai ne pas avoir de procedure stockée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for DATE in (SELECT distinct date_cols FROM mytable WHERE user_id = id)
            ACC = ACC + SELECT sum(score) FROM mytable WHERE user_id = id AND date_cols = DATE
    END for
    return AVG(ACC)

Discussions similaires

  1. [AC-2003] Condition sur des dates contenues dans une zone de liste
    Par mploki dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/05/2011, 14h41
  2. [XI R2] Condition sur des objets "date-heure"
    Par bastoonet dans le forum Deski
    Réponses: 2
    Dernier message: 09/09/2008, 17h21
  3. EXCEL SOMME.SI avec condition sur des dates
    Par cfhal dans le forum Excel
    Réponses: 7
    Dernier message: 15/10/2007, 08h21
  4. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  5. Réponses: 9
    Dernier message: 17/01/2004, 10h51

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