PTA之SQL训练题

目录

10-24 创建视图计算学生平均绩点

表结构:

表样例

输出样例:

0-14 创建视图,包含拥有属性值个数大于1的商品信息

表结构:

表样例

视图样例:


10-24 创建视图计算学生平均绩点

现有一个学生数据库,内包含学生表(Student)、课程表(Course)和选修表(SC)。

通常在学生毕业前,教务工作人员需要统计每位学生的课程平均绩点以检查其是否达到毕业条件和授位条件。由于数据库中只有课程百分制成绩,因此需要先将课程成绩转换为课程绩点后再计算其平均绩点。课程成绩与绩点之间的转换规则如下:

请设计一个视图V_average_point,计算学生平均绩点。

提示:请使用CREATE VIEW语句作答,并请注意数据表名、列名大小写。

表结构:

学生表(Student)、课程表(Course)和选修表(SC)结构如下:

CREATE TABLE `Student` (
  `Sno` varchar(20) NOT NULL,
  `Sname` varchar(10) DEFAULT NULL,
  `Ssex` varchar(2) DEFAULT NULL,
  `Sage` int(3) DEFAULT NULL,
  `Sdept` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`Sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `Course` (
  `Cno` varchar(10) NOT NULL,
  `Cname` varchar(20) DEFAULT NULL,
  `Cpno` varchar(10) DEFAULT NULL,
  `Ccredit` int(3) DEFAULT NULL,
  PRIMARY KEY (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `SC` (
  `Sno` varchar(20) NOT NULL,
  `Cno` varchar(10) NOT NULL,
  `Grade` int(3) DEFAULT NULL,
  PRIMARY KEY (`Sno`,`Cno`),
  KEY `Cno` (`Cno`),
  CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`),
  CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表样例

Student表:

Course表:

SC表:

输出样例:

视图V_average_point输出:

取消

create view V_average_point
as select Sdept,Sno,avg(Grade) as Average_point
from 
(
    select a.Sdept,a.Sno,(case when Grade<60 then 0 else (Grade-50)/10 end) as Grade
    from Student as a
    right join SC as b on a.Sno = b.Sno
) as c
group by Sno

0-14 创建视图,包含拥有属性值个数大于1的商品信息

本题目要求编写SQL语句,
结合sh_goods表和sh_goods_attr_value表创建视图view_goods_2,包含拥有属性值的数量大于1个的商品对应的商品idname

表结构:

CREATE TABLE sh_goods (
  id INT  PRIMARY KEY,                         --商品id
  category_id INT  NOT NULL DEFAULT 0 ,        -- 商品分类id
  name VARCHAR(120) NOT NULL,                  --商品名称
  keyword VARCHAR(255) NOT NULL,               -- 关键词编号
  content TEXT NOT NULL ,                      --商品详情
  price DECIMAL(10, 2)  NOT NULL DEFAULT 0 ,   --价格
  stock INT  NOT NULL DEFAULT 0,               -- 库存
  score DECIMAL(3, 2)  NOT NULL DEFAULT 0 ,    -- 用户评分
  comment_count INT  NOT NULL DEFAULT 0        -- 评论数量
) ;
CREATE TABLE sh_goods_attr_value (
id INT PRIMARY KEY ,-- 属性值id,
goods_id INT NOT NULL DEFAULT 0 , --商品id
attr_id INT  NOT NULL DEFAULT 0 ,-- 属性id
attr_value VARCHAR(80) NOT NULL  --属性值
);

表样例

sh_goods表:

sh_goods_attr_value表:

视图样例:

create view view_goods_2
as select
id,name
from sh_goods
where id in(
    select goods_id
    from sh_goods_attr_value
    group by goods_id
    having count(*) > 1
)

猜你喜欢

转载自blog.csdn.net/qq_62799214/article/details/127703507