實驗五 聚合查詢
- 資料結構說明
- 第1關:查詢統計一
- 第2關:查詢統計二
- 第3關:查詢統計三
- 第4關:查詢統計四
資料結構說明
表結構如下:
學生表:Student
| 欄位名 | 型別 | 主碼 | 備注 |
|---|---|---|---|
| Sno | char(10) | Y | 學號 |
| Sname | varchar(20) | 姓名 | |
| Ssex | char(2) | 性別 | |
| Sage | smallint | 年齡 | |
| Sdept | varchar(20) | 所在系 |
課程表:Course
| 欄位名 | 型別 | 主碼 | 備注 |
|---|---|---|---|
| Cno | char(10) | Y | 課程號 |
| Cname | varchar(20) | 課程名 | |
| Cpno | char(10) | 先行課號 | |
| Ccredit | smallint | 課程學分 |
學生選課表:SC
| 欄位名 | 型別 | 主碼 | 備注 |
|---|---|---|---|
| Sno | char(10) | Y | 學號 |
| Cno | char(10) | Y | 課程號 |
| Grade | smallint | 成績 |
第1關:查詢統計一
任務描述
本關任務:使用聚合函式做查詢練習
相關知識
使用SQL語言中的 Select 陳述句,
使用聚合函式完成查詢練習
SQL陳述句中關鍵詞大小寫不區分,考慮到本系統的測評規則,在題目中要求對列名小寫的,請務必按要求書寫,否則會評判為錯誤!
性別用’m’表示男,’f’表示女
實驗完成要求
根據代碼區的提示,將查詢資料的SQL陳述句書寫在對應的代碼區中,
注:請務必將select子句中出現的列名小寫,順序必須和題目要求一致
1、查詢‘001’號的學生不及格的課程數,列出不及格課程數(列名為:scnt)
2、查詢每個學生不及格的課程數,列出學號和不及格課程數(列名為:scnt),
3、查詢每個系女同學的平均年齡,列出所在系和平均年齡(列名為:sageavg),
測驗說明
書寫查詢陳述句后,直接測驗,
sql陳述句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“1、查詢‘001’號的學生不及格的課程數,列出不及格課程數(列名為:scnt)”的SQL陳述句 ********** --
select count(Sno) as scnt from sc
where Sno='001' and Grade<60
group by Sno;
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“2、查詢每個學生不及格的課程數,列出學號和不及格課程數(列名為:scnt)”的SQL陳述句 ********** --
select sno,Count(Sno) as scnt from sc
where grade<60
group by Sno;
-- ********** End ********** --
GO
sql3:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“3、查詢每個系女同學的平均年齡,列出所在系和平均年齡(列名為:sageavg)”的SQL陳述句 ********** --
select sdept,avg(sage) as sageavg from Student
where ssex='f'
group by sdept;
-- ********** End ********** --
GO
第2關:查詢統計二
任務描述
本關任務:使用聚合函式做查詢練習
相關知識
使用SQL語言中的 Select 陳述句,
使用聚合函式完成查詢練習
SQL陳述句中關鍵詞大小寫不區分,考慮到本系統的測評規則,在題目中要求對列名小寫的,請務必按要求書寫,否則會評判為錯誤!
性別用’m’表示男,’f’表示女
實驗完成要求
根據代碼區的提示,將查詢資料的SQL陳述句書寫在對應的代碼區中,
注:請務必將select子句中出現的列名小寫,順序必須和題目要求一致
1、查詢Niki(姓名)同學的平均分,列出平均分(列名為:savg)
2、查詢CS系每個同學的平均分,列出學號和平均分(列名為:savg),
3、查詢學分為2的每門課程的選課人數,列出課程號和選課人數(列名為:scnt),
測驗說明
書寫查詢陳述句后,直接測驗,
sql陳述句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“1、查詢Niki(姓名)同學的平均分,列出平均分(列名為:savg)”的SQL陳述句 ********** --
select avg(grade) as savg from Sc
where Sno in (select sno from Student where Sname='Niki');
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“2、查詢CS系每個同學的平均分,列出學號和平均分(列名為:savg)”的SQL陳述句 ********** --
select sno,avg(grade) as savg from Sc
where Sno in (select Sno from Student where Sdept='CS')
group by Sno;
-- ********** End ********** --
GO
sql3:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“3、查詢學分為2的每門課程的選課人數,列出課程號和選課人數(列名為:scnt)”的SQL陳述句 ********** --
select cno,count(Sno) as scnt from Sc
where Cno in (select Cno from Course where Ccredit=2)
group by Cno;
-- ********** End ********** --
GO
第3關:查詢統計三
任務描述
本關任務:使用聚合函式做查詢練習
相關知識
使用SQL語言中的 Select 陳述句,
使用聚合函式完成查詢練習
SQL陳述句中關鍵詞大小寫不區分,考慮到本系統的測評規則,在題目中要求對列名小寫的,請務必按要求書寫,否則會評判為錯誤!
性別用’m’表示男,’f’表示女
實驗完成要求
根據代碼區的提示,將查詢資料的SQL陳述句書寫在對應的代碼區中,
注:請務必將select子句中出現的列名小寫,順序必須和題目要求一致
1、查詢平均分最高的學生的姓名,
2、查詢不及格人數大于等于2人的課程,列出課程號,課程名,不及格人數(列名為scnt)
測驗說明
書寫查詢陳述句后,直接測驗,
sql陳述句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“1、查詢平均分最高的學生的姓名”的SQL陳述句 ********** --
select sname from Student
where Sno in (select Sno from Sc
group by Sno
having avg(grade)>=all(select avg(grade) from Sc
group by Sno));
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“2、查詢不及格人數大于等于2人的課程,列出課程號,課程名,不及格人數(列名為scnt)”的SQL陳述句 ********** --
select Course.cno,cname,Count(sno) as scnt from Sc,Course
where Course.Cno=Sc.Cno and Grade<60
group by Course.cno,Cname
having Count(sno)>=2;
-- ********** End ********** --
GO
第4關:查詢統計四
任務描述
本關任務:使用聚合函式做查詢練習
相關知識
使用SQL語言中的 Select 陳述句,
使用聚合函式完成查詢練習
SQL陳述句中關鍵詞大小寫不區分,考慮到本系統的測評規則,在題目中要求對列名小寫的,請務必按要求書寫,否則會評判為錯誤!
性別用’m’表示男,’f’表示女
實驗完成要求
根據代碼區的提示,將查詢資料的SQL陳述句書寫在對應的代碼區中,
注:請務必將select子句中出現的列名小寫,順序必須和題目要求一致
1、查詢E系平均成績最高的同學的姓名,列出姓名,
測驗說明
書寫查詢陳述句后,直接測驗,
sql陳述句
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此處寫“1、查詢E系平均成績最高的同學的姓名,列出姓名”的SQL陳述句 ********** --
select sname from Sc,Student
where Sc.Sno=Student.Sno and Sdept ='E'
group by Sname
having avg(grade)>=all(select avg(grade) from Sc
where sno in (select sno from Student where Sdept='E')
group by sno );
-- ********** End ********** --
GO
注:答案不唯一,僅供參考,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/279321.html
標籤:其他
上一篇:SQL資料同步
下一篇:JDBCUtils工具包
