SQL演習2についてのいくつかの書き込み。。。選択科目が2つ以上あり、スコアが60ポイントを超えるコースを照会します。張先生が教えたすべてのコースを教えた選択科目の学生を照会します。学生が取得した合計クレジットを計算して入力します。

10-1「C言語」コースを受講しなかった学生のクエリ(10ポイント)
このトピックでは、SQLステートメントの記述、「C言語」コースを受講していない学生のレコードの取得、および出力結果セットを学生番号の昇順で並べ替える必要があります。

ヒント:SELECTステートメントを使用して回答してください。存在しないで使用してください。

select sno as 学号,sname as 姓名 from stu  
where  sno  not in
(select distinct sno from sc where  
  not exists(select * from cou where cou.cno = sc.cno and cname != 'C语言') )  
			 order by sno asc;

10-2 S001の学生が受講したが、S003の学生が選択しなかったコースを照会する(10ポイント)
このトピックでは、SQLステートメントを準備し、中学校番号がS001であるが、scテーブルのS003の学生番号の学生が受講していないコースの数を取得する必要があります。

ヒント:SELECTステートメントを使用して回答してください。MySQLはexceptステートメントの使用を許可していません。

select cno as 课程号 from sc
where cno not in(
select s1.cno as 课程名  from sc s1 join sc s2
on s1.cno = s2.cno
where
(s1.sno = 's001' and s2.sno = 's003')) and sno = 's001';

10-4平均スコアが80を超える学生のクエリ(10ポイント)
この質問では、平均スコアが80を超える学生の名前をクエリするSQLステートメントを作成する必要があります。

ヒント:SELECTステートメントを使用して回答してください。

select  sname  from stu 
where sno in
(
select sno from sc group by sno having avg(grade) >= 80);

10-5張先生が教えたすべてのコースを受講し
た生徒に問い合わせる(10ポイント)このトピックでは、張先生が教えたすべてのコースを受講した生徒に問い合わせるSQLステートメントを準備する必要があります。

ヒント:SELECTステートメントを使用して回答してください。

select sname
from stu
where not exists
(select * 
from cou
where not exists
(select *
from sc 
where sc.sno=stu.sno and sc.cno=cou.cno) and cou.teacher = '张老师')

10-6学生が取得した合計クレジット(10ポイント)を
計算して入力します。この質問では、UPDATEステートメントを記述し、各学生が取得した合計クレジットを計算し、stuテーブルの合計クレジットフィールドに入力する必要があります。

そのうち、合計クレジットは、各学生が合格した選択科目のクレジットの合計です。注:コースのクレジットを取得できるのは、60ポイント以上の選択スコアのみです。各コースのクレジットは、couテーブルのクレジットフィールドにあります。

update stu,(select sno sno,sum(credit) total 
from
(select sc.sno sno,case when sc.grade>=60 then credit else NULL end credit
from stu
join sc on sc.sno = stu.sno
join cou on sc.cno = cou.cno
group by sc.sno,credit,grade) nstu1
group by sno) nstu2
set stu.totalcredit = nstu2.total
where stu.sno = nstu2.sno;

この質問は、ここに置くと少し高すぎると感じます。それでは、後で待つ必要があります。

10-7ブックテーブルと借用テーブルを使用して、ブックの借用状況を照会します。必要な結果には、アカウント番号、バーコード、ブックタイトル、借用日(10ポイント)の列が含まれます。
このトピックでは、ブックリストと借用を通じてSQLステートメントを準備する必要があります。表、本の借り入れ状況を照会します。必要な結果には、アカウント番号、バーコード、本のタイトル、借り入れ日が含まれます。

ヒント:SELECTマルチテーブルクエリメソッドを使用してください。

select 借阅.账号,借阅.条形码,图书.书名,借阅.借书日期 from 图书 join
借阅
on 图书.条形码 = 借阅.条形码

10-8ソフトウェアエンジニアリング専攻の最年長の学生の名前を照会する(10ポイント)
このトピックでは、ソフトウェアエンジニアリング専攻の最年長の学生の名前を照会するSQLステートメントを作成する必要があります。

ヒント:SELECTステートメントを使用して回答してください。

select sname from stu 
where mno = (select mno from major where mname = '软件工程')
and birdate = 
(select min(birdate) from stu)

10-9「C言語」コースを受講したが「データ構造」コースを受講しなかった学生のクエリ(10ポイント)
このトピックではSQLステートメントを作成する必要があり、クエリは「C言語」コースを受講しますが、「データ構造」コースは受講しません。学生の名前。

ヒント:SELECTステートメントを使用して回答してください。

select sname from stu where sno in(
select distinct sno from sc where sno in(
select sno from sc 
where sno not in
(select sno from sc where cno = 'c003')  and cno = 'c002'))

(scからsnoを選択します。ここでcno = 'c003')およびcno = 'c002'))は、
「C言語」に等しく「データ構造」に等しくないcnoを見つけるためにも使用できます

10-10 2つ以上の選択科目とスコアが80ポイント(10ポイント)を超える学生のクエリ
この質問では、2つ以上の選択科目とスコアが80ポイントを超える学生の名前、専攻、および合計をクエリするSQLステートメントを作成する必要があります。クレジット。

ヒント:SELECTステートメントを使用して回答してください。

select sname 姓名,mno 专业,sum(credit) 总学分 from stu join
sc on stu.sno = sc.sno join cou
on sc.cno = cou.cno
group by sname,mno
having count(sc.cno) >= 2 and min(grade) >=80;

10-11 2つ以上の選択科目と60ポイント(10ポイント)
を超えるスコアを持つコースのクエリこの質問では、SQLステートメントの準備、コース名と2つ以上の選択科目と60ポイントを超えるスコアを持つコースの最高スコアのクエリが必要です。 、最低グレードと平均グレード。

ヒント:SELECTステートメントを使用して回答してください。

select sc.cno 课程号,cname 课程名,max(grade) 最高成绩,min(grade) 最低成绩,avg(grade) 平均成绩 from sc join
cou on sc.cno = cou.cno
group by sc.cno,cou.cname having count(sc.cno) > 2 and min(grade) >= 60 and count(*) = count(grade )
;

おすすめ

転載: blog.csdn.net/zheziu/article/details/111563788