تمرن على إنشاء استعلامات SQL
الأهداف: إنشاء استعلامات SQL أو النموذج العلائقي التالي المتعلق بإدارة النقاط السنوية لفصل من الطلاب :
ETUDIANT (N°Etudiant, Nom, Prénom)
MATIERE (CodeMat, LibelléMat, CoeffMat)
EVALUER (N°Etudiant#, CodeMat#, Date_Evaluation, Note)
MATIERE (CodeMat, LibelléMat, CoeffMat)
EVALUER (N°Etudiant#, CodeMat#, Date_Evaluation, Note)
ملاحظة : المفاتيح الأساسية مسطّرة والمفاتيح الخارجية مميزة بعلامة #
الأسئلة: قم بإنشاء استعلامات SQL التالية :
1. ما هو العدد الإجمالي للطلاب؟
2. أي من العلامات هي أعلى وأدنى علامة؟
3. ما هي علامة كل طالب في كل مادة؟
4. ما هي المعدلات لكل مادة؟ (سنستخدم الاستعلام من السؤال 3 كمصدر للجدول الذي سنعمل عليه)
5. ما هو المعدل العام لكل طالب؟
6. ما هو المعدل العام للترقية؟ (سنستخدم الاستعلام من السؤال 5 كمصدر للجدول الذي سنعمل عليه)
7. من هم الطلاب الذين لديهم متوسط عام أكبر من أو يساوي المتوسط العام للترقية؟
الجواب على الأسئلة:
1. ما هو العدد الإجمالي للطلاب؟
SELECT COUNT(*) FROM ETUDIANT ;
2. أي من العلامات هي أعلى وأدنى علامة؟
SELECT MIN(Note), MAX(Note) FROM EVALUER ;
3. ما هي علامة كل طالب في كل مادة؟
SELECT ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat,
AVG(Note) AS MoyEtuMat
FROM EVALUER, MATIERE, ETUDIANT
WHERE EVALUER.CodeMat = MATIERE.CodeMat
AND EVALUER.N°Etudiant = ETUDIANT.N°Etudiant
GROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat;
AVG(Note) AS MoyEtuMat
FROM EVALUER, MATIERE, ETUDIANT
WHERE EVALUER.CodeMat = MATIERE.CodeMat
AND EVALUER.N°Etudiant = ETUDIANT.N°Etudiant
GROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat;
AVG: يقوم هذا الاستعلام متوسط نقاط العمود "اسم_العمود" في كافة السجلات
4. ما هي المعدلات لكل مادة؟
SELECT LibelléMat, AVG(MoyEtuMat)
FROM MOYETUMAT
GROUP BY LibelléMat ;
5. ما هو المعدل العام لكل طالب؟
SELECT N°Etudiant, Nom, Prénom,
SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu
FROM MOYETUMAT
GROUP BY N°Etudiant, Nom, Prénom ;
SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu
FROM MOYETUMAT
GROUP BY N°Etudiant, Nom, Prénom ;
6. ما هو المعدل العام للترقية؟
SELECT AVG(MgEtu)
FROM MGETU ;
FROM MGETU ;
7. من هم الطلاب الذين لديهم متوسط عام أكبر من أو يساوي المتوسط العام للترقية؟
SELECT N°Etudiant, Nom, Prénom, MgEtu
FROM MGETU
WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ;
FROM MGETU
WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ;
يتبع في دروس أخرى....
Merci a vous
RépondreSupprimer