J'essaie de faire une liste d'étudiants et leur efficacité avec des tests. Dans MySql
base de données Je tablesRequête MySql - compter les lignes et les pourcentages
users
- table avec les étudiants
id | name
_________
1 | Joe
2 | Marry
3 | Max
4 | Anna
----------
courses
- table avec des cours
id | name
_____________
1 | Course 1
2 | Course 2
----------
questions
- table avec des questions pour chaque cours. cours_id Row indique dans quel cours cette question appartient à
id | cours_id | question
_________________________________
1 | 1 | Course 1 - question 1
2 | 1 | Course 1 - question 2
3 | 1 | Course 1 - question 3
4 | 1 | Course 1 - question 4
5 | 2 | Course 2 - question 1
6 | 2 | Course 2 - question 2
7 | 2 | Course 2 - question 3
8 | 2 | Course 2 - question 4
cours_invitations
- chaque étudiant reçoit une invitation pour un cours. Row user_id affiche l'identifiant de l'utilisateur invité à suivre un cours. cours_id représente l'identifiant du cours qu'un étudiant doit faire. Lorsque l'état de la ligne a la valeur 0, cela signifie qu'un étudiant n'a pas commencé le cours (en cours) et s'il a la valeur 1, cela signifie que l'étudiant l'a démarré (ou terminé).
id | user_id | cours_id | status
________________________________
1 | 1 | 1 | 1
2 | 1 | 2 | 0
3 | 2 | 1 | 0
4 | 3 | 1 | 1
5 | 4 | 1 | 1
6 | 4 | 2 | 1
Exemple: Joe et Anna sont invités à faire cours 1 et 2 Cours, Marry et Max sont invités à le faire seul cours 1. Joe a cours 1 mais pas Cours 2, Marry ne rien faire et Max a suivi le cours 1
courses_stats
- sont les statistiques des questions des cours que les étudiants ont faites. Le statut représente l'exactitude de la réponse. 0 signifie mauvaise réponse et 1 pour corriger.
id | user_id | question_id | status
___________________________________
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 1 | 3 | 0
4 | 2 | 1 | 1
5 | 2 | 2 | 1
6 | 2 | 3 | 1
7 | 2 | 4 | 1
8 | 4 | 1 | 1
9 | 4 | 2 | 1
10 | 4 | 3 | 0
11 | 4 | 4 | 0
12 | 4 | 5 | 1
13 | 4 | 6 | 1
Exemple: Joe a 3 questions de la première course.Notice qu'il n'a pas fait toutes les questions de ce cours et que l'on est incorrect.
Max a fait toutes les bonnes questions et Anna fait question d'abord (la moitié sont incorrectes) et la moitié du deuxième cours (tout correct)
je besoin d'une requête avec des noms de sudents, perecentage de cours finis, pourcentage des réponses correctes de ces cours qu'ils ont fait (pas tous les cours) et la possibilité de commander des étudiants par ces pourcentages. Quelque chose comme ceci:
name | completed courses | completed questions
______________________________________________
Max |100% |100%
Anna |100% |50%
Joe |50% |50%
Marry |0% |0%
est quelque chose comme ça possible? Ai-je besoin de plus de lignes dans les tableaux pour cette requête?
réponse rapide et belle requête. –
Merci. L'original était légèrement faux. A besoin de 'LEFT JOIN 'comme vous le mentionnez dans votre réponse mais aussi une partie supplémentaire sur le' ON' pour s'assurer qu'il ne compte que des questions pour les cours que l'utilisateur a commencé (par exemple, les questions complétées de Joe doivent être 50%, pas 25% – MichaelRushton
parfait, vous avez raison. vous voudrez peut-être ajouter 'ifnull (..., 0) AS completed_questions' car la question concurrente de marry sera nulle sinon, en lui montrant que 0 pourrait être meilleur. –