# 创建所有保险资产的详细记录视图
创建包含所有保险资产记录的详细信息的视图 v_insurance_detail,包括购买客户的名称、客户的身份证号、保险名称、保障项目、商品状态、商品数量、保险金额、保险年限、商品收益和购买时间。
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 client, property, insurance | |
where c_id = pro_c_id | |
and pro_type = 2 | |
and pro_pif_id = i_id; | |
/* end of your code */ |
涉及到多表连接,并且需要提取出来的数据在三张表中都有,因此三张表的名称都需要放在 select
之后,多表连接的条件为 c_id = pro_c_id and pro_pif_id = i_id;
。
# 基于视图的查询
基于上一关创建的视图 v_insurance_detail 进行分组统计查询,列出每位客户的姓名,身份证号,保险投资总额 (insurance_total_amount) 和保险投资总收益 (insurance_total_revenue), 结果依保险投资总额降序排列。
-- 基于上一关创建的视图v_insurance_detail进行分组统计查询,列出每位客户的姓名,身份证号,保险投资总额(insurance_total_amount)和保险投资总收益(insurance_total_revenue),结果依保险投资总额降序排列。 | |
-- 请用一条SQL语句实现该查询: | |
select | |
c_name, | |
c_id_card, | |
sum(pro_quantity * i_amount) 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 */ |
视图的查询和表格的查询的区别不大