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

SQL Firebird Discussion :

Moyenne par groupe


Sujet :

SQL Firebird

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ 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, 15h00
  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, 15h24
  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, 18h50
  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, 13h44
  5. effectuer une moyenne par rapport à un champ
    Par djejackk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/05/2005, 11h59

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