- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品文档
精品文档
PAGE
PAGE10
精品文档
PAGE
第九章习题
分组查询练习
a). 基于“生源情况”表,统计不同姓的人数, 列出:姓、人数,
结果按人数降序排序。(先统计所有学生的人数)
SELECTleft( 姓名,1)as 姓,count(*)as 人数
FROM生源情况
groupbyleft( 姓名,1)
ORDERBYcount(*)DESC
b). 基于“生源情况”表,按地区分类统计入学成绩的平均值、
最大值、最小值,并按平均值降序排列。 先统计所有入学成绩
的的平均值、最大值、最小值)
SELECT地区,avg(入学成绩)as 平均值,max(入学成绩)as 最大值,min(入学成绩)as 最
小值
FROM生源情况
groupby 地区
ORDERBYavg(入学成绩)DESC
c). 基于“生源情况”表,找出年龄平均值最高的班级。 (提示:
先按班级名称统计每个班级的平均年龄,再找年龄的最大值)
SELECTTOP1班级名称,AVG(year(date())-year( 出生日期))as 平均年龄
FROM生源情况
GROUPBY班级名称
ORDERBYAVG(year(date())-year( 出生日期))DESC
d). 基于“生源情况”表,列出学生人数少于 100的地区。
select 地区,count(*)as 学生人数
from 生源情况
groupby 地区
havingcount(*)<100
联接查询练习
a). 列举学号为“ 6”的同学所参加的考试的场次、教室和课程
名称。
select 场次,教室,课程名称
from 学生考试 innerjoin 课程on 学生考试.课程编号=课程.课程编号
where学号="6"
或
select 场次,教室,课程名称
from 学生考试,课程
where学号="6"and 学生考试.课程编号=课程.课程编号
b). 列举学号为“ 6”的同学所参加的每场考试的监考教师的姓
名。
select 姓名
from( 学生考试innerjoin 教师监考 on 学生考试.场次=教师监考.场次and 学生考试.
课程编号=教师监考.课程编号 and 学生考试.教室=教师监考.教室)innerjoin 教师on
教师监考.教师编号=教师.教师编号
where学号="6"
或
select 姓名
from 学生考试,教师监考,教师
where学号="6"and 学生考试.场次=教师监考.场次
and学生考试.课程编号=教师监考.课程编号 and 学生考试.教室=教师监考.教室
and教师监考.教师编号=教师.教师编号
c). 列举来自“浙江”的学生的所在学院名称、班级名称、学号
和姓名。
SELECT学院名称, 班级名称, 学号, 姓名
FROM(学院INNERJOIN 班级ON学院.学院编号 = 班级.学院编号)INNERJOIN 学生ON
班级.班级编号 = 学生.班级编号
WHERE地区="浙江"
或
SELECT学院名称, 班级名称, 学号, 姓名
FROM学院,班级,学生
WHERE地区="浙江"and 学院.学院编号= 班级.学院编号 and 班级.班级编号 = 学生.班
级编号
d). 查询“梁子平”同学所在班级的学生人数。
SELECT班级人数
FROM班级INNERJOIN 学生ON班级.班级编号= 学生.班级编号
WHERE姓名="梁子平"
或
SELECT班级人数
FROM班级,学生
WHERE姓名="梁子平"and 班级.班级编号 = 学生.班级编号
或
selectcount(*)
from 学生
where班级编号in(SELECT 班级编号 from 学生WHERE姓名="梁子平")
或
select 班级人数
from 班级
where班级编号in(SELECT 班级编号 from 学生WHERE姓名="梁子平")
子查询
a). 找出与学号“6”的学生同学院且同年出生的学生。
先作这个查询,学院编号为” 01”和1991出生的学生信息
select 学生.*
from 学生innerjoin 班级on 学生.班级编号=班级.班级编号
where学院编号="01"andyear( 出生日期)=1991
第一步:先找到该同学所在学院的编号
select 学院编号
from 班级
where班级编号in(select 班级编号 from 学生where 学号="6")
第二步:找到年份
SELECTyear(出生日期)from 学生where 学号="6"
第三步:多表连接
select 学生.*
from 学生innerjoin 班级on 学生.班级编号=班级.班级编号
where学院编号in( select 学院编号
f
文档评论(0)