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

Développement SQL Server Discussion :

Moyenne de résultat


Sujet :

Développement SQL Server

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut Moyenne de résultat
    Bonjour,

    je cherche à avoir la moyenne des références distinct qui s'affichent en fonction des num commande du code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select num_commande, count(distinct reference ) ref
    from Tables group by num_commande
    merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    moyenne = average soit AVG en SQL.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    sous réserve que la colonne soit numérique, c'est rarement le cas d'une référence

  4. #4
    Invité
    Invité(e)
    Par défaut
    je suis d'accord mais je ne comprend même pas quel sens peut avoir : « la moyenne des références distinct »

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Faut avouer...
    Plus probablement, la référence la plus fréquente ?
    A préciser !

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Ou le nombre moyen de références distinctes par commande ?

    Tatayo

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut
    Exactement je cherche à savoir le nombre moyen de ref distinctes / commande,

    je souhaite donc faire la moyenne de la colonne "ref_distinct" (que j'ai eu grâce au group by num_commande de mon code initiale) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    num_commande  ref_distinct
    1                        8
    2                        6
    3                        12
    si quelqu'un a une idée de comment faire...

    merci d'avance

    ps: dsl du manque de clarté du coup dans ma question initiale

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ; WITH SR AS ( 
    	select num_commande, count(distinct reference ) AS ref
    	from Tables 
    	group by num_commande
    )
    SELECT AVG(1.* ref) AS AvgDistRef
    FROM SR

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut
    merci beaucoup, je ne connaissais pas la clause With.

    Pourquoi mettre 1.* dans le AVG ?
    D'après mes tests je comprends que ça multiplie par 1 et affiche le résultat précis (avec les décimales) grâce au point .

    faut il juste l'apprendre comme une règle générale lorsqu'on utilise des fonctions d'agrégation + sous requête ou y a t il une raison ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    le 1. * est une façon de faire du transtypage pour avoir une décimale, sinon le résultat serait un INT
    Ça serait plus propre d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(CAST(ref as DECIMAL(10,2))) AS AvgDistRef

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je serai curieux de voir le modèle de données, car dans un modèle classique, une commande possède une à plusieurs lignes de commandes, autant qu'il y a de produits dans la commande (et donc de référence produits)., du coup compter le nombre de références distinctes ou de références tout court revient en ce cas au même.

    A moins qu'ici la référence désigne autre chose que la référence du produit ?

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut
    Vous avez tout a fait raison, count(reference) avec le group by suffirai, mais j'ai pris l'habitude d'écrire count(distinct reference) par sécurité, au moins je suis doublement sûr de m'être fais comprendre par le code (group by + distinct).

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Attention en ce cas, il y a un risque de double tri au détriment des performances : un pour le regroupement et un pour le dédoublonnage.
    Certains optimiseurs sont capables de détecter les opérations inutiles mais ce n'est pas toujours le cas.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/11/2018, 09h30
  2. Réponses: 3
    Dernier message: 24/06/2015, 08h10
  3. Résultat d'une moyenne toutes les 5 lignes
    Par fennec62 dans le forum Débuter
    Réponses: 1
    Dernier message: 02/08/2014, 23h10
  4. Réponses: 3
    Dernier message: 18/05/2003, 00h16
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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