任务描述
本关任务:
- 灵活使用分组操作和聚集函数解决比较复杂的数据统计问题
本关使用的关系说明:
product(maker,model,type) maker:表示生产厂商 model:生产的产品型号 type:产品类型,有pc laptop两种
pc(model,speed,ram,hd,price) 表示型号,速度,内存大小,硬盘大小,价格
laptop(model,speed,ram,hd,screen,price) 表示型号,速度,内存大小,硬盘大小,屏幕大小和价格 ####编程要求
-
本题可使用视图V_test(视图已经创建完成,可直接使用,你不需要再次创建视图) 了解视图的详细信息可参考下面的创建视图语句: create view V_test as select product.maker,product.model,product.type,pc.price,pc.hd,pc.speed from product join pc on product.model=pc.model union select product.maker,product.model,product.type,laptop.price,laptop.hd,laptop.speed from product join laptop on product.model=laptop.model
-
1.补全右侧代码片段中 第1题 下 Begin-End 区间的代码,查询在一种或两种电脑(含PC和laptop)中出现过的硬盘的容量。
-
2.补全右侧代码片段中 第2题 下 Begin-End 区间的代码,统计各生产厂商生产的电脑(不区分pc和laptop)的平均处理速度的最大值。
-
3.补全右侧代码片段中 第3题 下 Begin-End 区间的代码,统计出各厂商生产价格高于1000的产品数量,不用区分是pc还是laptop
-
4.补全右侧代码片段中 第4题 下 Begin-End 区间的代码,分别统计各厂商生产的pc,laptop的平均价格。
测试说明
测试过程:
-
本关涉及到的测试文件是 step2_test.sh ,平台将运行用户补全的 step2.sql 文件,得到数据;
-
将得到的数据与答案比较,判断代码是否正确。
实验代码
USE test_wyy_db_guet
Go
SET NOCOUNT ON
---------- 第1题 ----------
-- ********** Begin ********** --
select hd from v_test group by hd
having count(model)=1 or count(model)=2;
-- ********** End ********** --
GO
---------- 第2题 ----------
-- ********** Begin ********** --
select max(avgspeed)
from (select avg(speed) as avgspeed from v_test group by maker)
as avgtable;
-- ********** End ********** --
GO
---------- 第3题 ----------
-- ********** Begin ********** --
select maker,count(*)
from v_test
where price>1000
group by maker;
-- ********** End ********** --
GO
---------- 第4题 ----------
-- ********** Begin ********** --
select maker,type,avg(price)
from v_test
group by maker,type;
-- ********** End ********** --
GO