Discussion: Moyenne par groupe

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 270
    Points : 2 276
    Points
    2 276

    Par défaut Moyenne par groupe

    Salut !

    Voilà je boude sur une requête qui me paraissait facile tout au début. J'ai besoin de calculer la moyenne d'une colonne pour chaque groupe.
    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
    select  s.nom_step, f.date_bilan,
            sum(f.montant) charge,
            max(e.montant_facture_ht) energie,
            max(p.volume_mj_sortie * p.nombre_jour_reel) volume,
            ((max(e.montant_facture_ht) + max(p.volume_mj_sortie * p.nombre_jour_reel))
                / (max(p.volume_mj_sortie * p.nombre_jour_reel))) prix_revient,
             -- comment faire pour calculer le prix de revient moyen par STEP ?
     
            from tb_step s
     
        inner join tb_frais_bilan_2014 f on (s.code_step = f.code_step)
        inner join tb_energie e on (s.code_step = e.code_step)
            and e.date_mois = f.date_bilan
        inner join tb_process p on (s.code_step = p.code_step)
            and p.date_bilan = f.date_bilan
     
    group by s.nom_step, f.date_bilan
    order by s.nom_step, f.date_bilan
    Merci par avance pour toute contribution.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 547
    Points : 19 951
    Points
    19 951
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    faire la moyenne par STEP alors que le clause group by est par step et date n'est à mon avis pas possible
    par contre utiliser cette même requête à l'intérieur d'une CTE pour interroger celle-ci,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH CTE AS (.....)
    SELECT NOM_STEP,AVG(prix_revient) FROM CTE GROUP BY NOM_STEP
    ou si cette même requête est "stockée" comme vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE VIEW REQUETEVUE AS select  s.nom_step, f.date_bilan, .......
    puis interrogée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nom_step,AVG(prix_revient) FROM REQUETEVUE GROUP BY nom_step
    passer par une vue sera peut être plus rapide que par la CTE,surtout que j'ai cru lire, je ne sais plus où, qu'une vue pouvait être indexée avec FB 3 ? à moins que ce soit en lisant des choses à propos de SQL server
    en tout cas si tu veux reporter la moyenne dans chaque résultat de ta première requête ce sera certainement beaucoup plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH M AS (SELECT nom_step,AVG(prix_revient) MOYENNE FROM REQUETEVUE GROUP BY nom_step)
    SELECT V.*,M.MOYENNE FROM REQUETEVUE V JOIN M ON V.NOM_STEP=M.NOM_STEP
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 270
    Points : 2 276
    Points
    2 276

    Par défaut

    Salut
    Citation Envoyé par SergioMaster Voir le message
    faire la moyenne par STEP alors que le clause group by est par step et date n'est à mon avis pas possible
    par contre utiliser cette même requête à l'intérieur d'une CTE pour interroger celle-ci
    J'y avais déjà panser mais le hic c'est que j'ai besoin de cette moyenne comme colonne dans la 1ère requête.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 547
    Points : 19 951
    Points
    19 951
    Billets dans le blog
    4

    Par défaut

    Bonjour,
    Citation Envoyé par Just-Soft Voir le message
    CTE ... J'y avais déjà pensé mais le hic c'est que j'ai besoin de cette moyenne comme colonne dans la 1ère requête.
    c'est bien ce que j'avais cru comprendre et c'est pour cette raison que j'ai proposé une vue et le dernier code qui permet de l'exploiter
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 270
    Points : 2 276
    Points
    2 276

    Par défaut

    Bonjour

    oui c'est exactement ça je ne sais pas pourquoi j'ai loupé ça à ma 1ére lecture.
    Citation Envoyé par SergioMaster Voir le message
    passer par une vue sera peut être plus rapide que par la CTE,surtout que j'ai cru lire, je ne sais plus où, qu'une vue pouvait être indexée avec FB 3 ? à moins que ce soit en lisant des choses à propos de SQL server
    en tout cas si tu veux reporter la moyenne dans chaque résultat de ta première requête ce sera certainement beaucoup plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH M AS (SELECT nom_step,AVG(prix_revient) MOYENNE FROM REQUETEVUE GROUP BY nom_step)
    SELECT V.*,M.MOYENNE FROM REQUETEVUE V JOIN M ON V.NOM_STEP=M.NOM_STEP
    merci maître Serge.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 547
    Points : 19 951
    Points
    19 951
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    un petit sur le post #2 alors ?
    Si quelqu'un pouvait me confirmer ou non cette histoire d'index sur une vue avec Firebird je serai largement récompensé de mon intervention
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

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

Discussions similaires

  1. Moyenne par groupes
    Par samfred1989 dans le forum SAS STAT
    Réponses: 1
    Dernier message: 17/06/2013, 16h00
  2. [XL-2003] moyenne par mois pour un groupe de valeurs
    Par keaton7 dans le forum Excel
    Réponses: 7
    Dernier message: 13/06/2009, 16h24
  3. Trier les fichiers par type et les afficher par groupe ...
    Par KneXtasY dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 18/09/2005, 19h50
  4. concaténer par GROUP BY des champs text/varchar
    Par Fredobdx dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/07/2005, 14h44
  5. effectuer une moyenne par rapport à un champ
    Par djejackk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/05/2005, 12h59

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