头歌的数据库的第二次作业的答案

目录

MySQL-视图

第1关:创建所有保险资产的详细记录视图

第2关:基于视图的查询

[MySQL数据库 - 连接查询](#MySQL数据库 - 连接查询)

第1关:内连接查询

第2关:外连接查询

第3关:复合条件连接查询

[MySQL数据库 - 子查询](#MySQL数据库 - 子查询)

第1关:带比较运算符的子查询

第2关:关键字子查询

[MySQL数据库 - 使用聚合函数查询](#MySQL数据库 - 使用聚合函数查询)

[第1关:COUNT( )函数](#第1关:COUNT( )函数)

[第2关:SUM( )函数](#第2关:SUM( )函数)

[第3关:AVG( )函数](#第3关:AVG( )函数)

[第4关:MAX( )函数](#第4关:MAX( )函数)

[第5关:MIN( )函数](#第5关:MIN( )函数)

[MySQL数据库 - 分组选择数据](#MySQL数据库 - 分组选择数据)

[第1关:GROUP BY 与 聚合函数](#第1关:GROUP BY 与 聚合函数)

[第2关:使用 HAVING 与 ORDER BY](#第2关:使用 HAVING 与 ORDER BY)


MySQL-视图

第1关:创建所有保险资产的详细记录视图

任务描述

本关任务:创建所有保险资产的详细记录视图。

sql 复制代码
use finance1;
-- 创建包含所有保险资产记录的详细信息的视图v_insurance_detail,包括购买客户的名称、客户的身份证号、保险名称、保障项目、商品状态、商品数量、保险金额、保险年限、商品收益和购买时间。
-- 请用1条SQL语句完成上述任务:

create view v_insurance_detail
as
select c_name,c_id_card,i_name,i_project,pro_status,pro_quantity,i_amount,i_year,pro_income,pro_purchase_time
from (select * from (select * from (select * from client union select * from client new_client) a join property b on a.c_id = b.pro_c_id) c join insurance d on c.pro_pif_id = d.i_id) e where e.pro_type = '2';

/*   end  of your code  */

第2关:基于视图的查询

任务描述

本关任务:基于视图v_insurance_detail查询每位客户保险资产的总额和保险总收益。

sql 复制代码
 -- 基于上一关创建的视图v_insurance_detail进行分组统计查询,列出每位客户的姓名,身份证号,保险投资总额(insurance_total_amount)和保险投资总收益(insurance_total_revenue),结果依保险投资总额降序排列。
 
--  请用一条SQL语句实现该查询:
 
 
 
select c_name,c_id_card,sum(i_amount*pro_quantity) as insurance_total_amount,sum(pro_income) as insurance_total_revenue
 
from v_insurance_detail
 
group by c_id_card
 
order by insurance_total_amount desc
 
 
 
/*  end  of  your code  */

MySQL数据库 - 连接查询

第1关:内连接查询

任务描述

本关任务:使用内连接查询数据表中学生姓名和对应的班级。

sql 复制代码
USE School;

########## 查询数据表中学生姓名和对应的班级 ##########
#请在此处添加实现代码
########## Begin ##########

select s.name studentName,c.name className
from
tb_student s
join
tb_class c
on(s.class_id=c.id);


########## End ##########

第2关:外连接查询

任务描述

本关任务:使用外连接查询数据表中所有班级和对应班级里学生的姓名。

sql 复制代码
USE School;

########## 使用左外连接查询所有学生姓名和对应的班级 ##########

#请在此处添加实现代码
########## Begin ##########

select s.name studentName,c.name className
from
tb_student s
left join
tb_class c
on(s.class_id=c.id);


########## End ##########

########## 使用右外连接查询所有学生姓名和对应的班级 ##########

#请在此处添加实现代码
########## Begin ##########

select s.name studentName,c.name className
from
tb_student s
right join
tb_class c
on(s.class_id=c.id);


########## End ##########

第3关:复合条件连接查询

任务描述

本关任务:使用连接查询,查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级。

sql 复制代码
USE School;

########## 查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级 ##########
#请在此处添加实现代码
########## Begin ##########

select s.name studentName,score,c.name className
from
tb_student s
join
tb_class c
on(s.class_id=c.id)
where s.score>90;


########## End ##########

MySQL数据库 - 子查询

第1关:带比较运算符的子查询

任务描述

本关任务:查询大于所有平均年龄的员工姓名与年龄。

sql 复制代码
USE Company;

#请在此处添加实现代码
########## Begin ##########
#1.查询大于所有平均年龄的员工姓名与年龄

select name,age
from tb_emp
where age>all(
    select avg(age) from tb_emp
);

########## End ##########

第2关:关键字子查询

任务描述

本关任务:根据要求使用关键字进行查询。

sql 复制代码
USE Company;
#请在此处添加实现代码
########## Begin ##########

#1.使用 ALL 关键字进行查询
select position,salary
from tb_salary
where salary>all(
    select salary from tb_salary where position='Java'
);
#2.使用 ANY 关键字进行查询
select position,salary
from tb_salary
where salary>any(
    select salary from tb_salary where position='Java'
);
#3.使用 IN 关键字进行查询
select position,salary
from tb_salary
where position in('Java');
########## End ##########

MySQL数据库 - 使用聚合函数查询

第1关:COUNT( )函数

任务描述

本关任务: 1.使用COUNT()函数查询数据表中总数据量, 2.使用COUNT()函数统计班级总人数。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

########## 查询该表中一共有多少条数据 ##########

select count(*) from tb_class;

########## 查询此表中367班有多少位学生 ##########

select classid,count(*) from tb_class where classid=367;

########## End ##########

第2关:SUM( )函数

任务描述

本关任务: 1.使用SUM()函数查询数据表中学生的总成绩; 2.使用SUM()函数查询语文课程中学生的总成绩。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

########## 查询所有学生总分数 ##########

select sum(score) from tb_class;

########## 查询学生语文科目的总分数 ##########

select course,sum(score) from tb_class where course='语文';

########## End ##########

第3关:AVG( )函数

任务描述

本关任务:使用AVG()函数查询学生各科目的平均分数。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

########## 查询学生语文科目的平均分数 ##########

select course,avg(score) from tb_class where course='语文';

########## 查询学生英语科目的平均分数 ##########

select course,avg(score) from tb_class where course='英语';

########## End ##########

第4关:MAX( )函数

任务描述

本关任务:使用MAX()函数查询各科中的最高分数。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

########## 查询语文课程中的最高分数 ##########

select course,max(score) from tb_class where course='语文';

########## 查询英语课程中的最高分数 ##########

select course,max(score) from tb_class where course='英语';

########## End ##########

第5关:MIN( )函数

任务描述

本关任务:使用MIN()函数查询学生在各科中的最低分数。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

########## 查询语文课程中的最低分数 ##########

select course,min(score) from tb_class where course='语文';

########## 查询英语课程中的最低分数 ##########

select course,min(score) from tb_class where course='英语';

########## End ##########

MySQL数据库 - 分组选择数据

第1关:GROUP BY 与 聚合函数

任务描述

本关任务:使用GROUP BY关键字结合聚合函数将数据进行分组。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

#1.查询表中2,3,4年级中分别男女的总人数

select gradeId,sex,count(*)
from student
where gradeId in(2,3,4)
group by gradeId,sex;

########## End ##########

第2关:使用 HAVING 与 ORDER BY

任务描述

本关任务:按照要求编写sql查询语句。

sql 复制代码
USE School;

#请在此处添加实现代码
########## Begin ##########

#1.查询表中至少有两门课程在90分以上的学生信息

select sno,count(*) from tb_grade
where score>=90
group by sno having count(1)>=2;

#2.查询表中平均成绩大于90分且语文课在95分以上的学生信息

select sno,avg(score)
from tb_grade
where sno in(
    select sno from tb_grade where pno='语文' and score>=95
)
group by sno
having avg(score)>=90;

########## End ##########
相关推荐
java_logo2 分钟前
Docker 部署 OpenViking:轻松搭建 AI Agent 上下文数据库平台
数据库·人工智能·docker·agent·火山引擎·openviking·轩辕镜像
Codiggerworld6 分钟前
Redis 正式接入 AI:当“最懂速度的数据库“开始解决“记忆问题“
数据库·人工智能·redis
白露与泡影7 分钟前
Redis 正式接入 AI:当“最懂速度的数据库“开始解决“记忆问题“
数据库·人工智能·redis
我不会插花弄玉15 分钟前
3.通用命令【由浅入深-redis】
数据库·redis·bootstrap
腾科IT教育26 分钟前
Oracle OCP和MySQL OCP怎么选?方向对比指南
mysql·oracle·ocp·oracle ocp·ocp怎么选·mysql ocp
大牧师1 小时前
Mybatis 框架教程
java·数据库·mybatis·数据持久化·orm
有想法的py工程师2 小时前
PostgreSQL【内核】 CBO 优化器的“早停下注”与数学模型失效分析
数据库·postgresql
用户460381291942 小时前
别人都 commit 了,为什么我的 select 还是旧值?图解 MySQL MVCC
mysql
冰暮流星2 小时前
sql之计算
数据库·sql
dishugj2 小时前
HANA集群状态监控
数据库·系统架构