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

Langage SQL Discussion :

Requête de statistiques (réussite de modules étudiant) ?


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut Requête de statistiques (réussite de modules étudiant) ?
    Salut,

    Je suis en train de faire des statistiques sur la réussite et l'échec des étudiants dans les modules (matières) auxquels ils participent.

    J'ai une table "resultat" dont voici les champs :

    libelleModuleResultat (le nom du module)
    noteResultat (de A à F)
    obtientCreditResultat (vaut 1 pour une bonne note et 0 pour une mauvaise note)

    J'aimerais connaître le nom du module dans lequel il y a le plus de réussite (il faut regarder si le champ obtientCreditResultat vaut 1 ou 0).

    Je pense qu'il faut mélanger du count() et du max() mais je ne vois pas trop comment faire...

    Merci à vous !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT libelleModuleResultat, SUM(obtientCreditResultat) AS SommeCrédit
    FROM resultat
    GROUP BY libelleModuleResultat
    ORDER BY SommeCrédit DESC
    Il faudra mettre un fetch first 1 rows mais la syntaxe change pas mal selon le SGBD.

    Sinon il faudrai peut être diviser la somme des crédit par le nombre de libelleModuleResultat

  3. #3
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Ok merci,

    Je viens de me rendre compte que mon raisonnement est trop quantitatif et pas assez qualitatif, il faudrait que je divise le nombre de obtientCreditResultat=1 par le nombre de obtientCreditResultat=0 et ceci pour un libelleModuleResultat.

    En effet avec ce raisonnement on ne fait pas de différence entre un module auxquel beaucoup d'étudiants participent et un module auxquel peu d'étudiants participent.

    Est-ce possible de faire une requête dans ce sens ?

    Une idée :

    SELECT libelleModuleResultat, count(obtientCreditResultat=1) FROM resultat

    divisé par

    SELECT libelleModuleResultat, count(obtientCreditResultat=0) FROM resultat

    et ceci pour un module
    Merci !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Tu peux faire quelque chose comme ceci:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select libelleModuleResultat,ifnull(sum(case when obtientCreditResultat = 1 then 1 else 0 end) / sum(case when obtientCreditResultat = 0 then 1 else 0 end),0)
    from resultat
    group by libelleModuleResultat

    Le ifnull() permet de gérer le cas de la division par 0.

    Tatayo.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bah le taux de réussite ca sera plutôt : nbre resultat positif / nbre de participant non ?

    d'où ce que je vous disait au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT libelleModuleResultat, (SUM(obtientCreditResultat)/COUNT(*)) AS taux
    FROM resultat
    GROUP BY libelleModuleResultat
    ORDER BY taux DESC

  6. #6
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Bah le taux de réussite ca sera plutôt : nbre resultat positif / nbre de participant non ?
    Ce raisonnement (que j'avais moi-même au début) pose un problème. En effet, certains modules accueillent beaucoup plus d'étudiants contrairement à d'autres. Ces modules auront donc une meilleure chance de réussite, ce qui est faux.

    Sinon comment je fais pour prendre le module avec le taux le plus élevé :

    SELECT libelleModuleResultat,ifnull(sum(case when obtientCreditResultat = 1 then 1 else 0 end) / sum(case when obtientCreditResultat = 0 then 1 else 0 end),0)
    FROM resultat
    GROUP BY libelleModuleResultat
    Merci !

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Avec max(), par exemple ?

    Tatayo.

  8. #8
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Oui c'est l'idée que j'avais mais où je pourrais bien le mettre ?

    Merci !

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par bond70 Voir le message
    Ce raisonnement (que j'avais moi-même au début) pose un problème. En effet, certains modules accueillent beaucoup plus d'étudiants contrairement à d'autres. Ces modules auront donc une meilleure chance de réussite, ce qui est faux.
    Bah si tu regarde la requête que je t'ai donné ca divise le nbre de réussite du module par le nombre d'occurrence du module.

    Donc ca te calcul bien un ratio par module et non par rapport au résultat global.

    Sinon comment je fais pour prendre le module avec le taux le plus élevé :
    Cf mon 1er poste.

    Il serai peut être temps de prendre 1h pour lire un tuto sql non ?

Discussions similaires

  1. plans de requête et statistiques
    Par Kropernic dans le forum Administration
    Réponses: 2
    Dernier message: 09/04/2014, 10h44
  2. [MySQL-5.1] Requête pour statistique
    Par bannik dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/05/2013, 10h24
  3. Réponses: 1
    Dernier message: 25/01/2011, 14h13
  4. [MySQL] Elaboration de requêtes à fins statistiques
    Par derbou dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/07/2008, 22h42
  5. Requête statistique.
    Par abdelghani_k dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/08/2005, 19h39

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