当前位置:网站首页>Exercices de renforcement des déclarations SQL (MySQL 8.0 par exemple)
Exercices de renforcement des déclarations SQL (MySQL 8.0 par exemple)
2022-07-04 03:36:00 【Cancri e】
Introduction à la fiche technique
- Formulaire étudiant
Student(SId,Sname,Sage,Ssex)
SId Étudiant No.,Sname Nom de l'étudiant,Sage Date de naissance,Ssex Sexe de l'étudiant
- Programme de cours
Course(CId,Cname,TId)
CId Numéro du cours,Cname Nom du cours,TId Nombre d'enseignants
- Tableau des enseignants
Teacher(TId,Tname)
TId Nombre d'enseignants,Tname Nom du professeur
- Feuille de notes
SC(SId,CId,score)
SId Étudiant No.,CId Numéro du cours,score Points
SQLDéclarations
- Formulaire étudiant Student
create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
insert into Student values('01' , 'Zhao Lei' , '1990-01-01' , 'Hommes');
insert into Student values('02' , 'Argent et électricité' , '1990-12-21' , 'Hommes');
insert into Student values('03' , 'Sun Feng' , '1990-12-20' , 'Hommes');
insert into Student values('04' , 'Li Yun' , '1990-12-06' , 'Hommes');
insert into Student values('05' , 'Zhou Mei' , '1991-12-01' , 'Femme');
insert into Student values('06' , 'Wu Lan' , '1992-01-01' , 'Femme');
insert into Student values('07' , 'Zheng Zhu' , '1989-01-01' , 'Femme');
insert into Student values('09' , 'Zhang San' , '2017-12-20' , 'Femme');
insert into Student values('10' , 'Li - si.' , '2017-12-25' , 'Femme');
insert into Student values('11' , 'Li - si.' , '2012-06-06' , 'Femme');
insert into Student values('12' , 'Zhao Liu' , '2013-06-13' , 'Femme');
insert into Student values('13' , 'Sun Qi' , '2014-06-01' , 'Femme');- Programme de cours Course
create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
insert into Course values('01' , 'Langues' , '02');
insert into Course values('02' , 'Mathématiques' , '01');
insert into Course values('03' , 'Anglais' , '03');- Tableau des enseignants Teacher
create table Teacher(TId varchar(10),Tname varchar(10));
insert into Teacher values('01' , 'Zhang San');
insert into Teacher values('02' , 'Li - si.');
insert into Teacher values('03' , 'Wang Wu');- Feuille de notes SC
create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);Sujet de l'exercice
Requête" 0 "Comparaison des cours" 02 "Information et notes des élèves ayant obtenu de bons résultats
SQLDéclarations
SELECT s.*, s1.CId, s1.score, s2.CId, s2.score
FROM Student as s, SC as s1, SC as s2
WHERE s.SId = s1.SId AND s.SId = s2.SId AND
s1.CId = '01' AND s2.CId = '02' AND
s1.score > s2.score
Résultats

La requête existe en même temps" 01 "Cours et" 02 "Situation des cours
SQLDéclarations
SELECT s1.*, s2.CId, s2.score
FROM SC as s1, SC as s2
WHERE s1.SId = s2.SId AND
s1.CId = '01' AND s2.CId = '02'
Résultats

La requête existe" 01 "Cours mais peut ne pas exister" 02 "Situation des cours(Afficher comme s'il n'existe pas null )
SQLDéclarations
SELECT s1.*, s2.CId,s2.score
FROM( SELECT *
FROM SC
WHERE SC.CId = '01') AS s1
LEFT JOIN (SELECT *
FROM SC
WHERE SC.CId = '02') AS s2
ON s1.SId = s2.SId
Résultats

La requête n'existe pas" 01 "Cours mais existence" 02 "Situation des cours
SQLDéclarations
SELECT s2.SId, s1.CId, s1.score, s2.CId, s2.score
FROM( SELECT *
FROM SC
WHERE SC.CId = '01') AS s1
RIGHT JOIN (SELECT *
FROM SC
WHERE SC.CId = '02') AS s2
ON s1.SId = s2.SId
Résultats

Le score moyen de la requête est supérieur ou égal à 60 Numéro de l'étudiant et nom de l'étudiant et note moyenne de l'étudiant
SQLDéclarations
SELECT s.SId, s.Sname, a.average_score
FROM (SELECT SId, AVG(score) as average_score
FROM SC
GROUP BY SId) as a
LEFT JOIN Student as s
ON a.SId = s.SId
WHERE a.average_score >= 60
Résultats

Requête dans SC Tableau renseignements sur les élèves ayant des notes
SQLDéclarations
SELECT *
FROM Student
WHERE SId in (SELECT DISTINCT SId
FROM SC)
Résultats

Demander le numéro d'étudiant de tous les étudiants、Nom de l'étudiant、Nombre total de cours sélectionnés、Note globale pour tous les cours(Aucun résultat affiché comme null)
SQLDéclarations
SELECT s.SId, s.Sname, a.course_num, a.sorce_sum
FROM Student as s
LEFT JOIN (SELECT SId, COUNT(CId) AS course_num, SUM(score) AS sorce_sum
FROM SC
GROUP BY SId) AS a
ON s.SId = a.SId
Résultats

Requête「Lee.」Nombre d'enseignants
SQLDéclarations
SELECT COUNT(*) AS li_num
FROM Teacher
WHERE Tname LIKE 'Lee.%'
Résultats

J'ai étudié les requêtes.「Zhang San」Informations sur les élèves enseignés par l'enseignant
SQLDéclarations
SELECT s.*
FROM Student as s
WHERE SId IN (SELECT SId
FROM SC
WHERE CId IN (SELECT CId
FROM Course
WHERE TId IN (SELECT TId
FROM Teacher
WHERE Tname = 'Zhang San')))
Résultats

Demander des renseignements sur les étudiants qui n'ont pas suivi tous les cours
SQLDéclarations
SELECT *
FROM Student
WHERE SId IN (SELECT SId
FROM SC
GROUP BY SId
HAVING COUNT(CId) < (SELECT COUNT(*)
FROM Course) )
Résultats

Demander au moins un cours et un numéro d'étudiant" 01 "Les mêmes informations que les autres étudiants.
SQLDéclarations
SELECT *
FROM Student
WHERE SId IN (SELECT DISTINCT SId
FROM SC
WHERE CId IN (SELECT CId
FROM SC
WHERE SId = '01') AND SId != '01')
Résultats

Recherche et" 0 "Les étudiants suivent exactement le même cours que les autres étudiants.
SQLDéclarations
SELECT *
FROM Student
WHERE SId IN (SELECT DISTINCT SId
FROM SC
WHERE CId IN (SELECT CId
FROM SC
WHERE SId = '01') AND SId != '01'
GROUP BY SId
HAVING COUNT(CId)>=3)
Résultats

Je n'ai pas appris les requêtes."Zhang San"Nom de l'étudiant pour tout cours donné par l'enseignant
SQLDéclarations
SELECT Sname
FROM Student
WHERE SId NOT IN (SELECT SId
FROM SC
WHERE CId IN(SELECT CId
FROM Course
WHERE TId IN (SELECT TId
FROM Teacher
WHERE Tname = 'Zhang San')))
Résultats

Demander le numéro d'étudiant d'un étudiant qui a échoué à deux cours ou plus,Nom et moyenne
SQLDéclarations
SELECT s.SId, s.Sname, AVG(score)
FROM Student as s, SC
WHERE s.SId = SC.SId AND score < 60
GROUP BY SC.SId
HAVING COUNT(*) >= 2
Résultats

Recherche" 0 "La note du cours est inférieure à 60,Information sur les élèves par ordre décroissant
SQLDéclarations
SELECT s.*, score
FROM Student as s, SC
WHERE CId = '01' AND score < 60 AND s.SId = SC.SId
ORDER BY score DESC
Résultats

Afficher les notes de tous les cours et les notes moyennes de tous les étudiants par moyenne de haut en bas
SQLDéclarations
SELECT SId,
SUM(CASE WHEN CId = '01' THEN score ELSE NULL END) AS score_01,
SUM(CASE WHEN CId = '02' THEN score ELSE NULL END) AS score_02,
SUM(CASE WHEN CId = '03' THEN score ELSE NULL END) AS score_03,
AVG(score) AS average_score
FROM SC
GROUP BY SId
ORDER BY average_score DESC
Résultats

Demander la note maximale de chaque section、Notes minimales et moyennes: Afficher comme suit::Cours ID,Cours name,Le score le plus élevé,Score minimum,Note moyenne,Taux de réussite,Taux moyen,Excellent taux,Taux d'excellence.Réussite>=60,Moyenne:70-80,Excellent:80-90,Excellent pour:>=90.Numéro du cours et nombre de candidats requis,Résultats de la requête par ordre décroissant de nombre de personnes,Si le nombre est le même,Par numéro de cours
SQLDéclarations
SELECT c.CId AS 'CoursID',
c.Cname AS 'Coursname',
MAX(score) AS 'Le score le plus élevé',
MIN(score) AS 'Score minimum',
AVG(score) AS 'Note moyenne',
SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 'Taux de réussite',
SUM(CASE WHEN score>=70 AND score<80 THEN 1 ELSE 0 END)/COUNT(*) AS 'Taux moyen',
SUM(CASE WHEN score>=80 AND score<90 THEN 1 ELSE 0 END)/COUNT(*) AS 'Excellent taux',
SUM(CASE WHEN score>=90 THEN 1 ELSE 0 END)/COUNT(*) AS 'Taux d'excellence'
FROM SC, Course AS c
WHERE SC.CId = c.CId
GROUP BY c.CId
ORDER BY COUNT(*) DESC, c.CId ASC
Résultats

Trier par section,Et afficher le classement, Score Conserver les postes vacants en cas de répétition
SQLDéclarations
SELECT s.*, rank_01, rank_02, rank_03
FROM Student as s
LEFT JOIN ( SELECT SId, rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_01 FROM SC WHERE CId = 01 ) a ON s.SId = a.SId
LEFT JOIN ( SELECT SId, rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_02 FROM SC WHERE CId = 02 ) b ON s.SId = b.SId
LEFT JOIN ( SELECT SId, rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_03 FROM SC WHERE CId = 03 ) c ON s.SId = c.Sid
Résultats

Trier par section,Et afficher le classement, Score Fusionner les noms en double
SQLDéclarations
SELECT s.*, rank_01, rank_02, rank_03
FROM Student as s
LEFT JOIN ( SELECT SId, dense_rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_01 FROM SC WHERE CId = 01 ) a ON s.SId = a.SId
LEFT JOIN ( SELECT SId, dense_rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_02 FROM SC WHERE CId = 02 ) b ON s.SId = b.SId
LEFT JOIN ( SELECT SId, dense_rank() OVER ( PARTITION BY CId ORDER BY score DESC ) AS rank_03 FROM SC WHERE CId = 03 ) c ON s.SId = c.Sid
Résultats

Demander le score total de l'étudiant,Et le classement,Conserver les postes vacants lorsque le score total est répété
SQLDéclarations
SELECT s.*, rank_total
FROM Student as s
LEFT JOIN (SELECT SId, rank() OVER (ORDER BY AVG(score) DESC) AS rank_total FROM SC GROUP BY SId) a ON s.SId = a.SId
ORDER BY rank_total ASC
Résultats

Demander le score total de l'étudiant,Et le classement,Aucun poste vacant n'est réservé lorsque le score total est répété
SQLDéclarations
SELECT s.*, rank_total
FROM Student as s
LEFT JOIN (SELECT SId, dense_rank() OVER (ORDER BY AVG(score) DESC) AS rank_total FROM SC GROUP BY SId) a ON s.SId = a.SId
ORDER BY rank_total ASC
Résultats

Statistiques sur le nombre de notes de chaque section:Numéro du cours,Nom du cours,[00-85],[85-70],[70-60],[60-0] Et pourcentage
SQLDéclarations
SELECT c.CId AS 'Numéro du cours',
Cname AS 'Nom du cours',
a.*
FROM Course as c,
(SELECT CId,
SUM(CASE WHEN score>=85 AND score<=100 THEN 1 ELSE 0 END)/COUNT(*) AS '100_85',
SUM(CASE WHEN score>=70 AND score<85 THEN 1 ELSE 0 END)/COUNT(*) AS '85_70',
SUM(CASE WHEN score>=60 AND score<70 THEN 1 ELSE 0 END)/COUNT(*) AS '70_60',
SUM(CASE WHEN score>=0 AND score<60 THEN 1 ELSE 0 END)/COUNT(*) AS '60_0'
FROM SC
GROUP BY CId) as a
WHERE a.CId = c.CId
Résultats

Interrogation des dossiers des trois meilleurs résultats de chaque section
SQLDéclarations
SELECT *
FROM (SELECT *, rank() OVER(PARTITION BY CId ORDER BY score DESC) AS rank_three
FROM SC) as a
WHERE a.rank_three<=3
ORDER BY a.CId, a.rank_three
Résultats

Demander le nombre d'étudiants sélectionnés pour chaque cours
SQLDéclarations
SELECT c.CId, Cname, COUNT(*) AS 'Nombre de personnes sélectionnées'
FROM SC, Course as c
WHERE SC.CId = c.CId
GROUP BY CId
Résultats

Demandez le numéro d'étudiant et le nom de l'étudiant qui n'a suivi que deux cours.
SQLDéclarations
SELECT s.SId, Sname
FROM SC, Student as s
WHERE SC.SId = s.SId
GROUP BY s.SId
HAVING COUNT(*) = 2
Résultats

Demandez aux garçons、Nombre de filles
SQLDéclarations
SELECT Ssex, COUNT(*)
FROM Student
GROUP BY Ssex
Résultats

Le nom de la requête contient「Le vent」Informations sur l'étudiant pour Word
SQLDéclarations
SELECT *
FROM Student
WHERE Sname LIKE '%Le vent%'
Résultats

Demander la liste des étudiants du même nom,Et compter le nombre de personnes du même nom
SQLDéclarations
SELECT s.*, a.num
FROM Student as s
LEFT JOIN (SELECT Sname, Ssex, COUNT(*) AS num
FROM Student
GROUP BY Sname, Ssex) AS a
ON a.Sname = s.Sname
WHERE
a.num>1
Résultats
Requête 990 Liste des étudiants nés en
SQLDéclarations
SELECT Sname, Sage
FROM Student
WHERE Sage LIKE '1990%'
Résultats

Demander une note moyenne par cours,Résultats par ordre décroissant de note moyenne,Même moyenne,Ordre croissant par numéro de cours
SQLDéclarations
SELECT CId, AVG(score) AS average_score
FROM SC
GROUP BY CId
ORDER BY AVG(score) DESC, CId ASC
Résultats

Le score moyen de la requête est supérieur ou égal à 85 Numéro d'étudiant de tous les étudiants、Nom et moyenne
SQLDéclarations
SELECT s.SId, Sname, AVG(score) AS average_score
FROM SC, Student as s
WHERE SC.SId = s.SId
GROUP BY SC.SId
HAVING average_score>=85
Résultats

Le nom du cours de requête est「Mathématiques」,Et le score est inférieur à 60 Nom et score de l'étudiant
SQLDéclarations
SELECT s.Sname, score
FROM Student as s, Course as c, SC
WHERE s.SId = SC.SId AND SC.CId = c.CId AND c.Cname = 'Mathématiques'
HAVING score<60
Résultats

Demandez à tous les élèves des cours et des notes(Les élèves n'ont pas de notes.,Pas de choix de cours)
SQLDéclarations
SELECT s.*, score, c.Cname
FROM Student as s
LEFT JOIN SC ON SC.SId = s.SId
LEFT JOIN Course as c ON SC.CId = c.CId
Résultats

Rechercher les notes de n'importe quel cours dans 70 Nom au - dessus de la note、Nom et score du cours
SQLDéclarations
SELECT Sname, Cname, score
FROM Student as s, SC, Course as c
WHERE s.SId = SC.SId AND SC.CId = c.CId
HAVING score>70
Résultats

Rechercher les cours qui échouent
SQLDéclarations
SELECT Sname, Cname
FROM Student as s, SC, Course as c
WHERE s.SId = SC.SId AND SC.CId = c.CId AND score<60
Résultats

Demander le numéro du cours 0 Et les résultats du cours sont 80 Numéro et nom de l'étudiant
SQLDéclarations
SELECT s.SId, Sname
FROM Student as s, SC
WHERE SC.SId = s.SId AND SC.CId = '01' AND score>=80
Résultats

Nombre d'étudiants par cours
SQLDéclarations
SELECT CId, COUNT(*) AS 'Nombre d'étudiants'
FROM SC
GROUP BY CId
Résultats

Les résultats ne se répètent pas,Requête facultative「Zhang San」Parmi les élèves du programme enseigné par l'enseignant,,Information sur les élèves les plus performants et leurs notes
SQLDéclarations
SELECT s.*, a.Cname, a.max_score
FROM Student as s,
(SELECT SId, c.Cname, MAX(score) AS max_score
FROM SC, Course as c, Teacher as t
WHERE t.Tname = 'Zhang San' AND t.TId = c.TId AND
c.CId = SC.CId) as a
WHERE a.SId = s.SId
Résultats

En cas de double note,Requête facultative「Zhang San」Parmi les élèves du programme enseigné par l'enseignant,,Information sur les élèves les plus performants et leurs notes
SQLDéclarations
SELECT s.*, b.score, b.ranking
FROM Student as s,
(SELECT SC.SId, SC.score, dense_rank() OVER(ORDER BY score DESC) AS ranking
FROM SC
WHERE CId = (SELECT CId
FROM Course
WHERE TId = (SELECT TId
FROM Teacher
WHERE Tname = 'Zhang San'))) AS b
WHERE b.ranking = 1 AND b.SId = s.SId
Résultats

Demander le numéro d'étudiant d'un étudiant ayant la même note dans différents cours、Numéro du cours、Résultats scolaires(Un petit problème.)
SQLDéclarations
SELECT s1.*, s2.*
FROM SC as s1 JOIN SC as s2
WHERE s1.CId != s2.CId AND s1.score = s2.score AND s1.SId != s2.SId
ORDER BY s1.SId, s1.CId, s1.score
Résultats

Rechercher les deux meilleurs résultats dans chaque domaine
SQLDéclarations
SELECT *
FROM (SELECT *, rank() OVER(PARTITION BY CId ORDER BY score DESC) AS rank_two
FROM SC) as a
WHERE a.rank_two<=2
ORDER BY a.CId, a.rank_two
Résultats

Compter le nombre d'étudiants optant pour chaque cours(Plus que 5 Le programme humain compte)
SQLDéclarations
SELECT CId, COUNT(*) AS course_num
FROM SC
GROUP BY CId
HAVING course_num>5
Résultats

Récupérer les numéros d'étudiant pour au moins deux cours
SQLDéclarations
SELECT SId, COUNT(*) AS course_num
FROM SC
GROUP BY SId
HAVING course_num>=2
Résultats

Demander des renseignements sur les étudiants qui ont choisi tous les cours
SQLDéclarations
SELECT *
FROM Student
WHERE SId IN(SELECT SId
FROM SC
GROUP BY SId
HAVING COUNT(*) = (SELECT COUNT(*) FROM Course))
Résultats

Demander l'âge de chaque étudiant,Année seulement
SQLDéclarations
SELECT Sname, YEAR(NOW())-YEAR(Sage) AS age
FROM Student
Résultats

Calculé par date de naissance,Jour du mois en cours < Date de naissance,Âge moins un
SQLDéclarations
SELECT Sname, TIMESTAMPDIFF(YEAR,Sage,NOW()) AS age
FROM Student
Résultats

Demandez aux élèves qui ont fêté leur anniversaire cette semaine
SQLDéclarations
SELECT *
FROM Student
WHERE WEEK(NOW()) = WEEK(Sage)
Résultats

Demandez aux élèves de célébrer leur anniversaire la semaine prochaine
SQLDéclarations
SELECT *
FROM Student
WHERE WEEK(NOW())+1 = WEEK(Sage)
Résultats

Demandez aux élèves qui ont fêté leur anniversaire ce mois - ci
SQLDéclarations
SELECT *
FROM Student
WHERE MONTH(NOW()) =MONTH(Sage)
Résultats

Demandez aux étudiants de célébrer leur anniversaire le mois prochain
SQLDéclarations
SELECT *
FROM Student
WHERE MONTH(NOW())+1 =MONTH(Sage)
Résultats

SQL Déclaration à titre d'information seulement , Il y a de meilleures façons d'accueillir les messages et les messages privés !!
边栏推荐
- [database I] database overview, common commands, view the table structure of 'demo data', simple query, condition query, sorting data, data processing function (single row processing function), groupi
- Cache general management class + cache httpcontext Current. Cache and httpruntime Differences between caches
- Dare to climb here, you're not far from prison, reptile reverse actual combat case
- Want to do something in production? Then try these redis commands
- 2022 Guangxi provincial safety officer a certificate examination materials and Guangxi provincial safety officer a certificate simulation test questions
- Code Execution Vulnerability - no alphanumeric rce create_ function()
- POSTECH | option compatible reward reverse reinforcement learning
- Hospital network planning and design document based on GLBP protocol + application form + task statement + opening report + interim examination + literature review + PPT + weekly progress + network to
- 数据库SQL语句汇总,持续更新......
- Setting methods, usage methods and common usage scenarios of environment variables in postman
猜你喜欢

基于PHP的轻量企业销售管理系统

MySQL one master multiple slaves + linear replication

Session learning diary 1

This function has none of DETERMINISTIC, NO SQL..... (you *might* want to use the less safe log_bin_t

Setting methods, usage methods and common usage scenarios of environment variables in postman

SQL injection (1) -- determine whether there are SQL injection vulnerabilities

1day vulnerability pushback skills practice (3)

Easy to win insert sort

96% of the collected traffic is prevented by bubble mart of cloud hosting

Recursive structure
随机推荐
Third party login initial version
Es network layer
CSP drawing
Future源碼一觀-JUC系列
New year's first race, submit bug reward more!
2006 translation
Basé sur... Netcore Development blog Project Starblog - (14) Implementation of theme switching function
JVM family -- heap analysis
Contest3145 - the 37th game of 2021 freshman individual training match_ J: Eat radish
Class summation, shortest row
PHP database connection succeeded, but data cannot be inserted
機器學習基礎:用 Lasso 做特征選擇
[Valentine's Day confession code] - Valentine's Day is approaching, and more than 10 romantic love effects are given to the one you love
Jenkins configures IP address access
选择排序与冒泡排序模板
The 37 year old programmer was laid off, and he didn't find a job for 120 days. He had no choice but to go to a small company. As a result, he was confused
Defensive programming skills
Aperçu du code source futur - série juc
Which product is better if you want to go abroad to insure Xinguan?
Consul of distributed service registration discovery and unified configuration management
Requête 990 Liste des étudiants nés en