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 et SQL. Discussion :

Requête calcul de la moyenne obtenue dans une discipline [AC-2019]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Requête calcul de la moyenne obtenue dans une discipline
    Bonsoir le Forum!
    J'ai un souci pour gérer les spécificités dans le calcul de la moyenne par discipline. J'ai essayé de passer par l'Assistant Requête mais je suis bloqué

    D'abord nous précisons que:
    MD=Moyenne des devoirs; CP=Composition; MM= Moyenne par matière; MS=Moyenne semestrielle

    Chez nous de façon générale, MM=(MD+CP)/2
    Mais comment gérer les particularités?
    Cas 1: Certaines classes ne composent dans certaines disciplines donc n'ont pas de note de composition
    Cas 2: Un élève peut justifier son son absence à une composition.
    Dans les deux cas sus-mentionnés MM=MD
    Cas 3: Un élève peut rater un devoir mais a fait la composition. Là l'élève n'a pas le même nombre de devoirs que ses camarades. Si par exemple les autres ont trois notes de devoirs, lui il en a deux. Ce qui veut dire que pour les autres MD = (Devoir 1 + Devoir 2 + Devoir 3)/3 et pour lui MD= (Devoir 1 + Devoir 2)/2

    Merci
    djibysadji

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,

    Lorsque tu lances le calcul de MD, je proposes que dans uns premier temps tu remplisses (par code VBA) une table temporaire
    comme T_temp_MD qui contient les colonnes :

    eleve_id long (identifiant de l'élève)
    matiere_id long (id discipline)
    nb_MD long (nd des devoirs à prendre en compte)
    MD double (moyenne des devoirs pris en compte)
    nb_CP long (Composition à prendre en compte : 1 ou 0)
    CP double (note Composition)
    MM double (pour stocker le calcul MM)

    ainsi il faut d'abord s'occuper de calculer MD et nb_MD (ton cas 3)
    une fois les champs nb_MD, MD, nb_CP et CP, il est facile de calculer MM selon ton algo

    cordialement
    "Always look at the bright side of life." Monty Python.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Bonjour, micniv!
    Merci beaucoup pour la réponse.
    J'ai oublié de préciser que j'étais un débutant. Donc il me sera difficile de mettre en application ta proposition. Si tu pouvais me donner plus de détails cela me permettrait de mieux comprendre. Un code par exemple

    djibysadji

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    bonjour, djibysadji

    Je vais te donner du travail ... à comprendre ma solution.
    Alors regarde tranquillement la solution ci-jointe que je te propose.
    Il y a beaucoup de nouveaux concepts pour un débutant mais c'est ainsi que je résoudrais ta problématique.
    A commencer par un travail d'analyse nécessaire sur les données : vois le schéma relationnel.

    Modus operandi :

    pour saisir les notes d'un devoir, utilise la requete R_note_attribuer (préalablement, il faut saisir la classe, l'élève, le devoir)

    le détail des notes est affiché dans R_classe_eleve_note

    une fois les notes saisies pour une classe, une matière, le formulaire F_calcul_MM permet de calculer les moyennes MM, les résultats sont stockés dans la table T_calcul_MM et affichés plus humainment dans R_calcul_MM_resultats


    Bien sûr si tu as des questions ...

    Cordialement
    Fichiers attachés Fichiers attachés
    "Always look at the bright side of life." Monty Python.

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Bonjour micniv!
    Toutes nos excuses pour n'avoir pas répondu un peu plus tôt.
    J'ai regardé le fichier que vous avez joint. Oui j'ai compris votre démarche.
    Mais j'ai un autre problème: dans chaque classe je dois faire deux classements:
    1) Un classement par discipline (Naturellement le classement se fera sur la base de la moyenne obtenue dans la discipline)
    2) Un classement par rapport à la moyenne semestrielle (MS). Parlant de la MS, étant donné que la somme des coefficients varie selon la classe, comment faire pour calculer cette moyenne semestrielle?

    Merci beaucoup pour l'appui que vous m'apportez.

    djibysadji

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Excuses acceptées ...

    Parlant de la MS, étant donné que la somme des coefficients varie selon la classe, ...
    S'agit-il bien du coefficient de la discipline pour calculer le moyenne MS ?
    Et donc ce coefficient serait spécifique à chaque classe ?

    A+
    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Citation Envoyé par micniv Voir le message
    Excuses acceptées ...


    S'agit-il bien du coefficient de la discipline pour calculer le moyenne MS ?
    Et donc ce coefficient serait spécifique à chaque classe ?

    A+
    Bonjour!
    Oui. Chaque discipline a un coefficient. Pour calculer la moyenne semestrielle on procède ainsi:
    1/ MM*Coef(coef de la matière) ce qui nous donne le nombre de points obtenus dans une matière donnée
    2/ Somme des (MM*Coeff) ce qui nous donne le total général (TG)
    3/ Somme(Coef) ou SC
    4/ Et au final on calcule la moyenne semestrielle(MS) ainsi: MS=TG/SC
    Etant donné que l'application est restreinte au collège, il y aura moins de problème car les disciplines ont les mêmes coefficients de la 6ème à la 3ème.
    Par exemple en math on a 3 pour tous les niveaux, en anglais 2, rédaction 2, orthographe 1 etc. Ce qui diffère c'est le nombre de matières enseignées par niveau.

    Merci

    djibysadji

  8. #8
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Moi je le ferai avec deux requêtes
    - la première qui me prend tous les élèves avec toutes les disciplines, leurs notes et leurs coefficients. Je vais créer un champ calculé NC(qui fait note*coefficient)
    - la deuxième me prend dans la première requête les noms des élèves, le champ NC, le coefficient. Je ferai la somme sur les champs NC dont je mettrai dans l'alias TOTAL et la somme des coefficients que je mettrai dans TOTALCOEF et j'ajouterai le champ calculé MOY(qui fera simplement TOTAL/TOTALCOEF).
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  9. #9
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Citation Envoyé par bertiny Voir le message
    Bonjour
    Moi je le ferai avec deux requêtes
    - la première qui me prend tous les élèves avec toutes les disciplines, leurs notes et leurs coefficients. Je vais créer un champ calculé NC(qui fait note*coefficient)
    - la deuxième me prend dans la première requête les noms des élèves, le champ NC, le coefficient. Je ferai la somme sur les champs NC dont je mettrai dans l'alias TOTAL et la somme des coefficients que je mettrai dans TOTALCOEF et j'ajouterai le champ calculé MOY(qui fera simplement TOTAL/TOTALCOEF).
    Bonjour Bertiny, le forum!
    Oui cela on sait le faire. Mais ma difficulté réside dans le classement des élèves par matière et par moyenne semestrielle(moyenne obtenue en faisant le rapport de la somme des NC sur TOTALCOEF). Pour la requête qui nous permettra de classer les élèves je sais qu'il faudra intégrer le paramètre 'classe', mais comment le faire?
    Auparavant, j'ai utilisé la requête ci-dessous pour classer les élèves de chaque classe selon la moyenne semestrielle. Mais je suis rendu compte qu'elle serait bonne pour connaître la meilleure moyenne de l'établissement et non d'une classe particulière.
    RS_1: VraiFaux(Val(CpteDom("*";"[R_MoySem]";"[MS_1] >" & Remplacer([MS_1];",";"."))+1)=1;Supprespace(Val(CpteDom("*";"[R_MoySem]";"[MS_1] > " & Remplacer([MS_1];",";"."))+1))+"er";Supprespace(Val(CpteDom("*";"[R_MoySem]";"[MS_1] > " & Remplacer([MS_1];",";"."))+1))+"ème")

    Précisions sur la requête: RS_1: Rang 1er semestre; MS_1: Moyenne 1er semestre; R_MoySem: c'est la requête qui nous a permis de calculer la moyenne semestrielle de chaque élève
    Le but final est de pouvoir établir des bulletins pour chaque chaque classe et de les imprimer

    Merci

    djibysadji

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour à tous,

    Voici une nouvelle version plus complète qui devrait répondre à tous les besoins exprimés :
    coefficient par matière et par classe pour le calcul de MS,
    calcul de RM,
    calculs de MS et RS ...

    J'ai mis quelques notes d'utilisation dans un module Information

    Cordialement
    Fichiers attachés Fichiers attachés
    "Always look at the bright side of life." Monty Python.

  11. #11
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Ce n'est pas la première fois que l'on cherche à calculer et afficher les ordinaux dans un classement par rang, du 1er au Nième
    Peut-être qu'un truc simple pourrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function RngOrdinal(MonChamp As Integer) As String
    Dim Suffix As String
    Select Case MonChamp
        Case 1
        Suffix = "er"
        Case Else
        Suffix = "ième"
    End Select
    RngOrdinal = MonChamp & Suffix
    End Function
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  12. #12
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Citation Envoyé par hyperion13 Voir le message
    Salut
    Ce n'est pas la première fois que l'on cherche à calculer et afficher les ordinaux dans un classement par rang, du 1er au Nième
    Peut-être qu'un truc simple pourrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function RngOrdinal(MonChamp As Integer) As String
    Dim Suffix As String
    Select Case MonChamp
        Case 1
        Suffix = "er"
        Case Else
        Suffix = "ième"
    End Select
    RngOrdinal = MonChamp & Suffix
    End Function
    Bonsoir hyperion13, le forum!
    Nous essayerons de tester le code. Un grand merci pour votre proposition.

    djibysadji

  13. #13
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Citation Envoyé par micniv Voir le message
    Bonjour à tous,

    Voici une nouvelle version plus complète qui devrait répondre à tous les besoins exprimés :
    coefficient par matière et par classe pour le calcul de MS,
    calcul de RM,
    calculs de MS et RS ...

    J'ai mis quelques notes d'utilisation dans un module Information

    Cordialement
    Rebonsoir!
    Je voudrais savoir si votre façon de libeller les noms des classes est liée au code. N'est-il pas possible d'avoir 6ème A à la place de 6-A1 par exemple?

    Merci

    djibysadji

  14. #14
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    N'est-il pas possible d'avoir 6ème A à la place de 6-A1 par exemple?
    Sans problème, il suffit de changer le nom de la classe (la colonne classe_libelle) dans la table T_classe et c'est répercuté dans toute l'application (dont les requêtes).

    cordialement
    "Always look at the bright side of life." Monty Python.

  15. #15
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Re
    Citation Envoyé par micniv Voir le message
    Sans problème, il suffit de changer le nom de la classe (la colonne classe_libelle) dans la table T_classe et c'est répercuté dans toute l'application (dont les requêtes).

    cordialement
    Bonsoir micniv!
    OK!

    Merci

    djibysadji

  16. #16
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    bonjour, djibysadji

    Je reprends (au hasard) ce fil pour te répondre.
    Ta demande :
    Si vous vous souvenez, pour la saisie des notes vous aviez créé un formulaire que vous avez nommé F_attrib_notes. Il fonctionne. Mais je voudrais intégrer le critère semestre pour filtrer seulement les devoirs du premier semestre ou ceux du second semestre.
    Ensuite comment faire pour n'afficher que les élèves de la classe sélectionnée dans la liste déroulante classe_num. Cela est une nécessité d'autant plus je dois chercher parmi plus de 600 élèves à chaque fois.

    Trouve dans la base ci_joint l'évolution demandée. Toute la réponse se tient dans l'utilisation du form F_attrib_notes.
    IL y a quelques subtilités de plus que dans le code précédent. En particuliers , pour pouvoir filtrer par semestre, il y a une requête 'source' R_attrib_notes_source (toutes les notes pour tous les devoirs et élèves) qui est la source de la requete
    R_attrib_notes_SF1 qui est la source de données pour le sous-form F_attrib_notes_SF1

    Bonne adaptation,
    cordialement
    bd note moyenne v9.zipbd note moyenne v9.zip
    "Always look at the bright side of life." Monty Python.

  17. #17
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut
    Salut!
    Je viens de voir ta réponse. Je vous reviens dès j'en aurai pris connaissance.

  18. #18
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par djibysadji Voir le message
    Salut!
    Je viens de voir ta réponse. Je vous reviens dès j'en aurai pris connaissance.
    Salut, micniv!
    Merci pour la solution. C'est exactement ce que nous cherchions à faire

    djibysadji

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2007, 11h26
  2. [Access] Comment faire un moyenne pondérée dans une requete ?
    Par megapacman dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2007, 09h23
  3. Réponses: 10
    Dernier message: 31/12/2006, 12h35
  4. [TSQL] calculer le nombre de mot dans une cellule
    Par ricachu dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 31/07/2006, 11h12

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