day73_oracle03_练习题

===========就一道练习题:=============

需求及表结构
传智播客为了更好的管理学员成绩信息,开发《学员成绩管理系统》。
表结构如下:
1.班级(T_CLASS)
字段名	类型(位数)	是否必填	说明
id	number	必填	主键
name	Varchar2(15)	必填	班级名称
2.学员(T_STUDENT)
字段名	类型(位数)	是否必填	说明
id	number	必填	主键
name	Varchar2(30)	必填	名称
sex	number(1)		性别  0:女  1:男
edu	Varchar2(30)		学历
tele	Varchar2(30)		电话
cardno	Varchar2(18)		身份证号
classid	number		班级编号
3.课程(T_COURSE)
字段名	类型(位数)	是否必填	说明
id	number	必填	主键
name	Varchar2(30)	必填	课程名称
4.成绩表(T_MARK)
字段名	类型(位数)	是否必填	说明
id	number	必填	主键
courseid	number	必填	课程ID
studentid	number	必填	学员ID
score	number		分数

练习一:创建表、序列 并录入测试数据
答案:

--班级
CREATE TABLE T_CLASS
(ID NUMBER NOT NULL PRIMARY KEY, 
 NAME VARCHAR2(30) NOT NULL UNIQUE
);

--学生
CREATE TABLE T_STUDENT
( ID NUMBER NOT NULL PRIMARY KEY, 
  NAME VARCHAR2(30), 
  SEX NUMBER(1) CHECK(SEX IN (0,1)),
  EDU VARCHAR2(30),
  TELE VARCHAR2(30), 
  CARDNO VARCHAR2(18) ,
  CLASSID NUMBER
);

--课程
CREATE TABLE T_COURSE 
(
  ID NUMBER NOT NULL PRIMARY KEY, 
  NAME VARCHAR2(50)
);
--成绩
CREATE TABLE T_MARK 
(
  ID NUMBER NOT NULL PRIMARY KEY, 
  COURSEID NUMBER,
  STUDENTID NUMBER,
  SCORE NUMBER
);
-----序列:
CREATE SEQUENCE SEQ_CLASS;
CREATE SEQUENCE SEQ_STUDENT;
CREATE SEQUENCE SEQ_COURSE;
CREATE SEQUENCE SEQ_MARK;

练习二:统计每门课程的平均成绩
 
--我的:
分析:每门课程:按课程分组。

select c.name,m.courseid, avg(m.score) avgScore
from t_marke m,t_course c
where m.courseid=c.id
group by c.id,m.courseid,c.name;
--【这里《按多条件分组》:实际上c.name对分组结果无影响,效果按c.id分组一样。---只为了符合group by 查询字段要求语法:多条件分组。
-- 这里只是为了分组结果,多一个c.name列,更直观】
--老师:
select m.courseid,c.name,  
       round(avg(m.score)) avgscore 
from t_marke m,t_course c 
where m.courseid=c.id 
group by m.courseid,c.name





===================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值