50 instructions sql couramment utilisées
Étudiant(S#,Snom,Sage,Sexe) Table des étudiants
Cours(C#,Cname,T#) Calendrier des cours
SC(S#,C#,score) Feuille de score
Enseignant(T#,Tname) Table Enseignant
question:
1. Interroger le nombre d'étudiants de tous les étudiants ayant des notes supérieures dans le cours " 001 " par rapport au cours " 002 " ;
select aS# from (select s#,score from SC where C#='001') a,(select s#,score
de SC où C#='002') b
où a.score>b.score et as#=bs# ;
2. Interroger le nombre d'étudiants et la note moyenne des étudiants dont la note moyenne est supérieure à 60 ;
sélectionnez S #, moy (score)
de sc
grouper par S# ayant avg(score) > 60 ;
3. Renseignez-vous sur le numéro d'étudiant, le nom, le nombre de cours et les notes totales de tous les étudiants;
sélectionnez Student.S#,Student.Sname,count(SC.C#),sum(score)
de l'étudiant à gauche Outer join SC on Student.S#=SC.S#
grouper par Student.S#,Sname
4. Interrogez le nombre d'enseignants avec le nom de famille "Li" ;
select count(distinct(Tname))
du professeur
où Tname comme 'Li%' ;
5. Renseignez-vous sur le numéro d'étudiant et le nom des étudiants qui n'ont pas étudié la classe du professeur "Ye Ping" ;
sélectionnez Student.S#,Student.Sname
de l'étudiant
où S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');
6. Interroger le numéro d'étudiant et le nom des étudiants qui ont étudié « 001 » et qui ont également suivi le cours numéroté « 002 » ;
sélectionnez Student.S#,Student.Sname from Student,SC où Student.S#=SC.S# et SC.C#='001'et existe (Sélectionnez * de SC comme SC_2 où SC_2.S#=SC.S# et SC_2.C#='002');
7. Interrogez les numéros d'étudiants et les noms des étudiants qui ont étudié tous les cours enseignés par l'enseignant "Ye Ping" ;
sélectionnez S #, Sname
de l'étudiant
où S# dans (sélectionnez S# dans SC ,Course ,Teacher où SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' groupe par S# ayant count(SC. C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));
8. Interroger les numéros d'étudiants et les noms de tous les étudiants dont les notes du cours numéro « 002 » sont inférieures à celles du cours numéro « 001 » ;
Sélectionnez S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
de Student,SC où Student.S#=SC.S# et C#='001') S_2 où score2 <score ;
9. Interrogez les numéros d'étudiants et les noms de tous les étudiants dont les notes de cours sont inférieures à 60 ;
sélectionnez S #, Sname
de l'étudiant
où S# pas dans (sélectionnez Student.S# à partir de Student,SC où SS#=SC.S# et score> 60 );
10. Interroger le numéro d'étudiant et le nom des étudiants qui n'ont pas suivi tous les cours ;
sélectionnez Student.S#,Student.Sname
de l'étudiant, SC
où Student.S#=SC.S# group by Student.S#,Student.Sname ayant count(C#) <(select count(C#) from Course);
11. Interroger le numéro d'étudiant et le nom de l'étudiant qui a au moins un cours et l'étudiant dont le numéro d'étudiant est « 1001 » ;
sélectionnez S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001' ;
12. S'informer des numéros d'étudiants et des noms des autres étudiants ayant suivi au moins un cours de l'étudiant dont le numéro d'étudiant est « 001 » ;
sélectionnez SC.S#,Sname distinct
de l'étudiant, SC
où Student.S#=SC.S# et C# in (sélectionnez C# à partir de SC où S#='001');
13. Remplacez les notes des cours enseignés par l'enseignant "Ye Ping" dans le tableau "SC" par la note moyenne de ce cours ;
mise à jour SC set score=(select avg(SC_2.score)
de SC SC_2
où SC_2.C#=SC.C# ) de Course,Teacher où Course.C#=SC.C# et Course.T#=Teacher.T# et Teacher.Tname='叶平');
14. Renseignez -vous sur le numéro d'étudiant et le nom des autres étudiants qui ont exactement le même cours que le camarade de " 1002 ";
sélectionnez S# à partir de SC où C# dans (sélectionnez C# à partir de SC où S#='1002')
grouper par S# ayant count(*)=(select count(*) from SC where S#='1002');
15. Supprimez l'enregistrement de la table SC de l'apprentissage de la classe de l'enseignant "Ye Ping" ;
Supprimer SC
du cours, Enseignant
où Course.C#=SC.C# et Course.T#= Teacher.T# et Tname='叶平' ;
16. Insérez des enregistrements dans la table SC Ces enregistrements doivent remplir les conditions suivantes : le nombre d'étudiants n'ayant pas suivi le cours numéroté " 003 ", 2 ,
La note moyenne de la classe ;
Insérez SC sélectionnez S #, '002', (Sélectionnez la moyenne (score)
from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');
17. Affichez les notes de tous les élèves des cours " Base de données ", " Gestion d'entreprise " et " Anglais " de haut en bas selon la note moyenne, et affichez-les sous la forme suivante : ID étudiant, Base de données, Gestion d'entreprise, Anglais, Nombre de cours valides , le score moyen effectif
SÉLECTIONNER S# comme StudentID
,(SELECT score FROM SC WHERE SC.S#=tS# AND C#='004') Base de données AS
,(SELECT score FROM SC WHERE SC.S#=tS# AND C#='001') AS Enterprise Management
,(SELECT score FROM SC WHERE SC.S#=tS# AND C#='006') AS 法语
,COUNT(*) AS nombre de cours valides, AVG(t.score) AS note moyenne
DE SC COMME t
GROUPER PAR S#
ORDER BY moy(t.score)
18. Interroger les scores les plus élevés et les plus bas de chaque matière : affichage sous la forme suivante : ID du cours, score le plus élevé, score le plus bas
SELECT LC# Comme ID de cours, L.score AS score le plus élevé, R.score AS score le plus bas
DE SC L ,SC COMME R
OÙ LC# = RC# et
L.score = (SELECT MAX(IL.score)
DE SC AS IL, étudiant AS IM
OÙ LC# = IL.C# et IM.S#=IL.S#
GROUPER PAR IL.C#)
ET
R.Score = (SELECT MIN(IR.score)
DE SC COMME IR
OÙ RC# = IR.C#
GROUPER PAR IR.C#
);
19. Selon le score moyen de chaque matière de bas en haut et le pourcentage de taux de réussite de haut en bas
SELECT tC# AS numéro de cours,max(course.Cname)AS nom du cours,isnull(AVG(score), 0 ) AS note moyenne
, 100 * SUM(CASE WHEN isnull(score, 0 )>= 60 THEN 1 ELSE 0 END)/COUNT(*) AS pourcentage de réussite
DE SC T,Cours
où tC#=course.C#
GROUPER PAR tC#
ORDER BY 100 * SUM(CASE WHEN isnull(score, 0 )>= 60 THEN 1 ELSE 0 END)/COUNT(*) DESC
20. Renseignez-vous sur les notes moyennes et les pourcentages de réussite dans les cours suivants (affichés avec "1 ligne") : Gestion d'entreprise ( 001 ), Marx ( 002 ), OO&UML ( 003 ), Base de données ( 004 )
SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS score moyen en gestion d'entreprise
, 100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS Pourcentage de réussite en gestion d'entreprise
,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS Score moyen maximum
, 100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS Max pourcentage de réussite
,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分
, 100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数
,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) Score moyen de la base de données AS
, 100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS pourcentage de réussite de la base de données
DE SC
21. Interrogez les notes moyennes des différents cours enseignés par différents enseignants et affichez-les de haut en bas
SELECT max(ZT#) ID de l'enseignant AS, MAX(Z.Tname) nom de l'enseignant AS, CC# ID du cours AS, MAX(C.Cname) nom du cours AS, AVG(Score) note moyenne AS
DE SC AS T,Cours AS C ,Enseignant AS Z
où TC#=CC# et CT#=ZT#
GROUPER PAR CC#
ORDER BY AVG(Score) DESC
22. Interroger les relevés de notes des étudiants qui se sont classés de la 3ème à la 6ème dans les cours suivants : gestion d'entreprise ( 001 ), Marx ( 002 ), UML ( 003 ), base de données ( 004 )
[numéro d'étudiant], [nom de l'étudiant], gestion d'entreprise, Marx, UML, base de données, moyenne pondérée cumulative
SELECT DISTINCT top 3
SC.S# Comme numéro d'étudiant,
Student.Sname AS nom de l'étudiant ,
T1.score AS Gestion d'entreprise,
T2.score AS Marx,
T3.score AS UML,
Base de données T4.score AS,
ISNULL(T1.score, 0 ) + ISNULL(T2.score, 0 ) + ISNULL(T3.score, 0 ) + ISNULL(T4.score, 0 ) as 总分
DE L'étudiant, SC GAUCHE REJOINDRE SC COMME T1
SUR SC.S# = T1.S# ET T1.C# = '001'
GAUCHE JOINDRE SC COMME T2
SUR SC.S# = T2.S# ET T2.C# = '002'
GAUCHE JOINDRE SC COMME T3
SUR SC.S# = T3.S# ET T3.C# = '003'
GAUCHE JOINDRE SC COMME T4
SUR SC.S# = T4.S# ET T4.C# = '004'
WHERE étudiant.S#=SC.S# et
ISNULL(T1.score, 0 ) + ISNULL(T2.score, 0 ) + ISNULL(T3.score, 0 ) + ISNULL(T4.score, 0 )
PAS DEDANS
(SÉLECTIONNER
DISTINCT
TOP 15 AVEC CRAVATES
ISNULL(T1.score, 0 ) + ISNULL(T2.score, 0 ) + ISNULL(T3.score, 0 ) + ISNULL(T4.score, 0 )
DE sc
JOINDRE GAUCHE sc COMME T1
ON sc.S# = T1.S# AND T1.C# = 'k1'
JOINDRE GAUCHE sc COMME T2
ON sc.S# = T2.S# AND T2.C# = 'k2'
JOINDRE GAUCHE sc COMME T3
ON sc.S# = T3.S# AND T3.C# = 'k3'
JOINDRE GAUCHE sc COMME T4
ON sc.S# = T4.S# AND T4.C# = 'k4'
ORDER BY ISNULL(T1.score, 0 ) + ISNULL(T2.score, 0 ) + ISNULL(T3.score, 0 ) + ISNULL(T4.score, 0 ) DESC);
23. Imprimez statistiquement les résultats de chaque sujet, le nombre de personnes dans chaque segment de score : identifiant du cours, nom du cours, [100-85], [85-70], [70-60], [<60]
SELECT SC.C# comme identifiant de cours, Cname comme nom de cours
,SOMME(CAS QUAND score ENTRE 85 ET 100 PUIS 1 SINON 0 FIN) COMME [100 - 85]
,SOMME(CAS QUAND score ENTRE 70 ET 85 PUIS 1 AUTREMENT 0 FIN) COMME [85 - 70]
,SOMME(CAS QUAND score ENTRE 60 ET 70 PUIS 1 AUTREMENT 0 FIN) COMME [70 - 60]
,SOMME(CAS QUAND score < 60 PUIS 1 SINON 0 FIN) COMME [60 -]
DE SC, Cours
où SC.C#=Cours.C#
GROUP BY SC.C#,Cname ;
24. Interrogez les notes moyennes et les classements des étudiants
SELECT 1 +(SELECT COUNT( note moyenne distincte)
FROM (SELECT S#,AVG(score) AS moyenne pondérée cumulative
DE SC
GROUPER PAR S#
) COMME T1
OÙ moyenne > T2. moyenne) comme rang,
S # comme numéro d'étudiant, moyenne pondérée cumulative
FROM (SELECT S#,AVG(score) Note moyenne
DE SC
GROUPER PAR S#
) COMME T2
COMMANDER PAR GPA desc ;
25. Interrogez les enregistrements des trois meilleurs scores dans chaque matière : (sans tenir compte de l'égalité des scores)
SÉLECTIONNEZ t1.S# comme ID d'étudiant, t1.C# comme ID de cours, Score comme score
DE SC t1
WHERE score IN (SÉLECTIONNER LE TOP 3 score
DE SC
OÙ t1.C#= C#
ORDRE PAR note DESC
)
ORDRE PAR t1.C# ;
26. Interroger le nombre d'étudiants inscrits à chaque cours
sélectionnez c#, count(S#) du groupe sc par C# ;
27. Interrogez les numéros d'étudiants et les noms de tous les étudiants qui n'ont suivi qu'un seul cours
select SC.S#,Student.Sname,count(C#) AS nombre de cours
de SC, étudiant
où SC.S#=Student.S# groupe par SC.S# ,Student.Sname ayant count(C#)= 1 ;
28. Interroger le nombre de garçons et de filles
Sélectionnez count(Ssex) comme nombre de garçons du groupe Student par Ssex ayant Ssex='male' ;
Sélectionnez count(Ssex) comme nombre de filles du groupe Student par Ssex ayant Ssex='female' ;
29. Interrogez la liste des étudiants avec le nom de famille "Zhang"
SELECT Sname FROM Student WHERE Sname like '张%' ;
30. Interrogez la liste des élèves du même nom et du même sexe, et comptez le nombre d'élèves du même nom
sélectionnez Sname,count(*) du groupe Student par Sname ayant count(*)> 1 ;;
31. Liste des étudiants nés en 1981 (Note : Le type de la colonne Sage dans la table Student est datetime)
sélectionnez Sname, CONVERT(char ( 11 ),DATEPART(year,Sage)) comme âge
de l'étudiant
où CONVERT(char( 11 ),DATEPART(year,Sage))='1981';
32. Interrogez les notes moyennes de chaque cours, les résultats sont triés par ordre croissant des notes moyennes, et si les notes moyennes sont les mêmes, ils sont triés par ordre décroissant par numéro de cours
Sélectionnez C #, Avg (score) du groupe SC par ordre C # par Avg (score), C # DESC ;
33. Interrogez le numéro d'étudiant, le nom et la note moyenne de tous les étudiants dont la note moyenne est supérieure à 85
sélectionnez Sname, SC.S #, moy (score)
de l'étudiant, SC
où Student.S#=SC.S# groupe par SC.S#,Sname ayant avg(score)> 85 ;
34. Interroger les noms et les scores des étudiants dont le nom du cours est "base de données" et dont les scores sont inférieurs à 60
Sélectionnez Sname,isnull(score, 0 )
de Étudiant, SC, Cours
où SC.S#=Student.S# et SC.C#=Course.C# et Course.Cname='数据库'et score < 60 ;
35. Renseignez-vous sur le choix de cours de tous les étudiants;
SELECT SC.S#,SC.C#,Sname,Cname
DE SC,Étudiant,Cours
où SC.S#=Student.S# et SC.C#=Cours.C# ;
36. Interrogez le nom, le nom du cours et le score de tout cours avec un score de 70 ou plus ;
SELECT distinct étudiant.S#,étudiant.Snom,SC.C#,SC.score
DE étudiant,Sc
WHERE SC.score>= 70 AND SC.S#=student.S# ;
37. Interrogez les cours échoués et organisez-les en fonction du numéro de cours du plus grand au plus petit
select c# from sc où scor e < 60 trier par C# ;
38. Interrogez le numéro d'étudiant et le nom de l'étudiant dont le numéro de cours est 003 et dont le score de cours est supérieur à 80 ;
sélectionnez SC.S#,Student.Sname de SC,Student où SC.S#=Student.S# et Score> 80 et C#='003' ;
39. Trouver le nombre d'étudiants qui ont choisi le cours
sélectionnez count(*) à partir de sc ;
40. Interrogez les noms des étudiants avec les notes les plus élevées et leurs notes parmi les étudiants qui ont suivi les cours enseignés par l'enseignant "Ye Ping"
sélectionnez Student.Sname,score
de Étudiant, SC, Cours C, Enseignant
où Student.S#=SC.S# et SC.C#=CC# et CT#=Teacher.T# et Teacher.Tname='叶平' et SC.score=(select max(score) from SC where C#= CC# );
41. Interrogez chaque cours et le nombre correspondant de cours au choix
sélectionnez count(*) du groupe sc par C# ;
42. Interrogez le numéro d'étudiant, le numéro de cours et la note d'étudiant des étudiants ayant les mêmes notes dans différents cours
sélectionnez AS#,B.score distinct de SC A ,SC B où A.Score=B.Score et AC# <>BC# ;
43. Interrogez les deux premiers avec les meilleures performances dans chaque matière
SÉLECTIONNEZ t1.S# comme ID d'étudiant, t1.C# comme ID de cours, Score comme score
DE SC t1
WHERE score IN (SÉLECTIONNER LE TOP 2 score
DE SC
OÙ t1.C#= C#
ORDRE PAR note DESC
)
ORDRE PAR t1.C# ;
44. Compter le nombre d'étudiants prenant des cours au choix pour chaque cours (uniquement pour les cours avec plus de 10 étudiants). Il est nécessaire d'indiquer le numéro du cours et le nombre de cours au choix. Les résultats de la requête sont classés par ordre décroissant du nombre de personnes. Les résultats de la requête sont classés par ordre décroissant du nombre de personnes. Si le nombre de personnes est le même , ils sont classés par ordre croissant du numéro de cours.
sélectionner C# comme numéro de cours, compter (*) comme nombre de personnes
de sc
grouper par C#
trier par nombre(*) desc,c#
45. Récupérer le nombre d'étudiants ayant suivi au moins deux cours
sélectionnez S#
de sc
grouper par s#
ayant count(*) > = 2
46. Interrogez le numéro de cours et le nom du cours des cours que tous les étudiants suivent au choix
sélectionnez C#, Cname
du cours
où C# in (sélectionnez c# dans le groupe sc par c#)
47. Interrogez les noms des étudiants qui n'ont étudié aucun des cours enseignés par l'enseignant "Ye Ping"
sélectionnez Sname à partir de Student où S# n'est pas dans (sélectionnez S# à partir de Course,Teacher,SC où Course.T#=Teacher.T# et SC.C#=course.C# and Tname='叶平');
48. Interroger le nombre d'étudiants et la note moyenne des étudiants qui ont échoué à plus de deux cours
select S#,avg(isnull(score, 0 )) from SC where S# in (select S# from SC where score < 60 group by S# having count(*)> 2 )group by S#;
49. Récupérer le nombre d'étudiants dont les notes sont inférieures à 60 dans le cours " 004 " et sont triés par ordre décroissant des notes
sélectionner S# à partir de SC où C#='004'et score < 60 trier par score desc ;
50. Supprimer les notes du cours " 001 " du camarade " 002 "
supprimer de Sc où S#='001'et C#='001' ;