50道SQL練習題

2021-10-04 17:19:02 字數 4685 閱讀 8230

網上流傳較廣的50道sql訓練,奮鬥了不知道多久終於寫完了。前18道題的難度依次遞增,從19題開始的後半部分算是迴圈練習和額外function的附加練習,難度恢復到普通狀態。

第9題非常難,我反正沒有寫出來,如果有寫出來了的朋友還請賜教。

這50道裡面自認為應該沒有太多錯誤,而且盡可能使用了最簡單或是最直接的查詢,有多種不相上下解法的題目我也都列出了,但也歡迎一起學習的朋友進行討論和解法優化啊~

資料表介紹

–1.學生表

student(sid,sname,sage,s***)

–sid 學生編號,sname 學生姓名,sage 出生年月,s*** 學生性別

–2.課程表

course(cid,cname,tid)

–cid 課程編號,cname 課程名稱,tid 教師編號

–3.教師表

teacher(tid,tname)

–tid 教師編號,tname 教師姓名

–4.成績表

sc(sid,cid,score)

–sid 學生編號,cid 課程編號,score 分數

學生表 student

create table student(sid varchar(10),sname varchar(10),sage datetime,s*** varchar(10));

insert into student values('01' , '趙雷' , '1990-01-01' , '男');

insert into student values('02' , '錢電' , '1990-12-21' , '男');

insert into student values('03' , '孫風' , '1990-12-20' , '男');

insert into student values('04' , '李雲' , '1990-12-06' , '男');

insert into student values('05' , '周梅' , '1991-12-01' , '女');

insert into student values('06' , '吳蘭' , '1992-01-01' , '女');

insert into student values('07' , '鄭竹' , '1989-01-01' , '女');

insert into student values('09' , '張三' , '2017-12-20' , '女');

insert into student values('10' , '李四' , '2017-12-25' , '女');

insert into student values('11' , '李四' , '2012-06-06' , '女');

insert into student values('12' , '趙六' , '2013-06-13' , '女');

insert into student values('13' , '孫七' , '2014-06-01' , '女');

科目表 course

create table course(cid varchar(10),cname nvarchar(10),tid varchar(10));

insert into course values('01' , '語文' , '02');

insert into course values('02' , '數學' , '01');

insert into course values('03' , '英語' , '03');

insert into course values('04' , '物理' , '04');

教師表 teacher

create table teacher(tid varchar(10),tname varchar(10));

insert into teacher values('01' , '張三');

insert into teacher values('02' , '李四');

insert into teacher values('03' , '王五');

insert into teacher values('04' , '趙六');

成績表 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);

練習題目

查詢" 01 「課程比」 02 "課程成績高的學生的資訊及課程分數

查詢平均成績大於等於 60 分的同學的學生編號和學生姓名和平均成績

查詢在 sc 表存在成績的學生資訊

查詢所有同學的學生編號、學生姓名、選課總數、所有課程的總成績(沒成績的顯示為 null )

查詢「李」姓老師的數量

查詢學過「張三」老師授課的同學的資訊

查詢沒有學全所有課程的同學的資訊

查詢至少有一門課與學號為" 01 "的同學所學相同的同學的資訊

查詢和" 01 "號的同學學習的課程 完全相同的其他同學的資訊

查詢沒學過"張三"老師講授的任一門課程的學生姓名

查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績

檢索" 01 "課程分數小於 60,按分數降序排列的學生資訊

按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

查詢各科成績最高分、最低分和平均分:

以如下形式顯示:課程 id,課程 name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率

及格為:>=60,中等為:70-80,優良為:80-90,優秀為:>=90

要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號公升序排列

按各科成績進行排序,並顯示排名, score 重複時保留名次空缺

查詢學生的總成績,並進行排名,總分重複時保留名次空缺

統計各科成績各分數段人數:課程編號,課程名稱,[100-85],[85-70],[70-60],[60-0] 及所佔百分比

查詢各科成績前三名的記錄

查詢每門課程被選修的學生數

查詢出只選修兩門課程的學生學號和姓名

查詢男生、女生人數

查詢名字中含有「風」字的學生資訊

查詢同名同性學生名單,並統計同名人數

查詢 1990 年出生的學生名單

查詢每門課程的平均成績,結果按平均成績降序排列,平均成績相同時,按課程編號公升序排列

查詢平均成績大於等於 85 的所有學生的學號、姓名和平均成績

查詢課程名稱為「數學」,且分數低於 60 的學生姓名和分數

查詢所有學生的課程及分數情況(存在學生沒成績,沒選課的情況)

查詢任何一門課程成績在 70 分以上的姓名、課程名稱和分數

查詢存在不及格的課程

查詢課程編號為 01 且課程成績在 80 分以上的學生的學號和姓名

求每門課程的學生人數

成績不重複,查詢選修「張三」老師所授課程的學生中,成績最高的學生資訊及其成績

成績有重複的情況下,查詢選修「張三」老師所授課程的學生中,成績最高的學生資訊及其成績

查詢不同課程成績相同的學生的學生編號、課程編號、學生成績

查詢每門課程成績最好的前兩名

統計每門課程的學生選修人數(超過 5 人的課程才統計)

檢索至少選修兩門課程的學生學號

查詢選修了全部課程的學生資訊

查詢各學生的年齡,只按年份來算

按照出生日期來算,當前月日 < 出生年月的月日則,年齡減一

查詢本週過生日的學生

查詢下週過生日的學生

查詢本月過生日的學生

查詢下月過生日的學生

50道C C 程式設計練習題 複習必備 1 10

使用c c 兩種語言完成50道題目,體會兩種語言之間的不同。編譯環境都是在vs2019,完成時間2020.06.21 2020.06.22 由於c 對c的相容性,部分main 函式沒有寫return 0 也可以執行成功,但是不提倡,最好加上,否則其他編譯器可能報錯。c語言不需要嚴格對齊,因此不對cs...

50道C C 程式設計練習題 複習必備 11 20

使用c c 兩種語言完成50道題目,體會兩種語言之間的不同。編譯環境都是在vs2019,完成時間2020.06.21 2020.06.22 由於c 對c的相容性,部分main 函式沒有寫return 0 也可以執行成功,但是不提倡,最好加上,否則其他編譯器可能報錯。c語言不需要嚴格對齊,因此不對cs...

SQL趣味練習題

第一中情況 create table renwu name varchar 20 not null,fahter varchar 20 insert into renwu values 小甲 大甲 insert into renwu values 大甲 老甲 insert into renwu na...