10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例

news/2024/11/15 1:51:04/

前言:测试用表

贴心杰将这个测试表分享给大家 ,如果大家做题的时候发现那个点过不去,一定不要直接看别人的博客,先自己测试用例,如果思路也对 ,验证数据也对,还有错误 你再看看别人的思路!!!

CREATE TABLE product
( maker CHAR(20) ,          -- 制造商model CHAR(20) NOT NULL,  -- 产品型号TYPE CHAR(20),            -- 产品类型PRIMARY KEY(model)
);
CREATE TABLE pc
( model CHAR(20) NOT NULL,    -- 型号speed  DECIMAL(6,2),        -- 速度ram  INT,                   -- 内存hd DECIMAL(6,2),            -- 硬盘容量cd CHAR(4),                 -- 光驱price INT,                  -- 价钱PRIMARY KEY(model),FOREIGN KEY(model) REFERENCES product(model)
);
CREATE TABLE laptop
( model CHAR(20) NOT NULL,    -- 型号speed  DECIMAL(6,2),        -- 速度 ram  INT,                   -- 内存hd DECIMAL(6,2),            -- 硬盘容量screen DECIMAL(6,2),        -- 屏幕大小price INT,                  -- 价钱PRIMARY KEY(model),FOREIGN KEY(model) REFERENCES product(model) 
);INSERT INTO productVALUES('D','2001','便携式电脑'),('D','2002','便携式电脑'),('D','3001','打印机'),('D','1008','个人电脑'),('D','1009','个人电脑');INSERT INTO productVALUES('A',1001,'个人电脑'),('A',1002,'个人电脑');INSERT INTO pcVALUES('1008',180.00,32,2.00,'8X',3699),('1009',200.00,32,2.50,'8X',2599);INSERT INTO pcVALUES('1001'	,133.00,	16,	1.60,	'6X',	1595),('1002',	120.00,	16	,1.60,	'6X',	1399);INSERT INTO laptopVALUES('2001',100.00,20,1.10,9.50,1999),(2002,117.00,12,0.75,11.30,2499);

一:10-4 6-4 查询厂商"D"生产的PC和便携式电脑的平均价格 (10 分)

-- 查询厂商D生产的PC和便携式电脑的平均价格-- 分析:1.查询出D和PC一个表 字段为price
--      2.查询D和laptop一个表 字段为price
--     3.union all 两个表 然后求出平均值和 注意 union all 是不去重的  union 是去重的
--     4.还有就是这道题最后求取的结果是要四舍五入的  要用 round(平均值) 别问我怎么知道的,我是试出来的 先用的floor 不对
--       然后改成 round 就对了
--    -- 1.
-- select price
--     from product,pc
--     where product.model = pc.model;-- -- 2.
-- select price
--     from product,laptop
--     where product.model = laptop.model;-- 3.
SELECT round(AVG(price)) AS avg_priceFROM (SELECT priceFROM product,pcWHERE product.model = pc.modelAND maker = 'D'UNION ALLSELECT priceFROM product,laptopWHERE product.model = laptop.model   AND maker = 'D') temp;

二:10-3 6-3 查询厂商"A"生产的PC的平均价格 (10 分)

-- 查询厂商A生产的PC的平均价格。-- 分析:1.查询出A生产的PC
--      2.求其平均价格select avg(price) as avg_pricefrom product,pcwhere product.model = pc.modeland maker = 'A';

三:10-6 6-6 查询各厂商生产的便携式电脑的显示器平均尺寸 (10 分)

--  查询各厂商生产的便携式电脑的显示器平均尺寸。
--  分析:1.先求出各个厂商对应的电脑屏幕
--       2.将其作为子表进行分组查询 平均尺寸;-- 错误示例:聚合函数不能和字段一块用  当 不是group by 的时候
-- select maker,avg(screen) as avg_screen
--     from product,laptop
--     where product.model = laptop.model;-- -- 1.
-- select maker,screen
--     from product,laptop
--     where product.model = laptop.model;-- 2.
select maker,avg(screen) as avg_screenfrom (select maker,screenfrom product,laptopwhere product.model = laptop.model) tempgroup by maker;

四:10-7 6-7 查询生产三种不同型号的PC的厂商 (10 分)

-- 查询生产三种不同型号的PC的厂商。
-- 分析:1.先将pc表和product表联合起来 字段为厂商 和 型号 这样求出 每个厂商对应的pc型号  表1
--      2.对表1进行分组查询 字段为 厂商 和 型号个数 并筛选出数量为3的厂商  表2
--      3.对表2进行查询 -- -- 1.
-- select maker,pc.model
--     from pc,product
--     where pc.model = product.model-- -- 2
-- select maker,count(maker) as nums
--     from (select maker,pc.model
--                 from pc,product
--                 where pc.model = product.model) temp
--      group by maker  having nums = 3;     -- -- 3select makerfrom (select maker,count(maker) as numsfrom (select maker,pc.modelfrom pc,productwhere pc.model = product.model) tempgroup by maker having nums = 3) temp1         

五:10-10 6-10 查询所有生产打印机的厂商生产的PC的硬盘平均容量 (10 分)

-- 查询所有生产打印机的厂商生产的PC的硬盘平均容量。-- 分析:
--     1.查询出既生产 打印机 又生产 PC 的厂商    
--       1>.查询出生产打印机的厂商 表1
--       2>.查询product表 字段为 厂商,model,条件为 maker 来自 表1 and type = 个人电脑 表2
--    2.联合表2和PC表求出 平均硬盘容量-- 1.1
-- select maker
--     from product,printer
--     where product.model = printer.model-- -- 1.2
-- select maker,product.model
--     from product
--     where maker in (select maker
--                         from product,printer
--                         where product.model = printer.model)
--     and type = "个人电脑"-- 2
select avg(hd) as avg_hdfrom pc,(select maker,product.modelfrom productwhere maker in (select makerfrom product,printerwhere product.model = printer.model)and type = "个人电脑") tempwhere pc.model = temp.model;                

其他 有疑问的题可以留言 , 上方分享一下我认为很好的题!!!!!!!!!
写sql语句 一定要有自己的分析,然后一步步写写,最重要的你的逻辑表达出来,这几道破题,不是最重要的
好了 有疑问的题可以留言 或择你认为有难度的题也可以分享给我 ,我非常乐意做题,加油陌生人


http://www.ppmy.cn/news/151451.html

相关文章

Java工厂模式(随笔)

前言:Java工厂模式是一种创建型设计模式,它提供了一种将对象创建过程封装到一个单独的类中的方式,这个类就是被称为‘工厂类’,它根据特定的条件来决定应该创建哪个对象! 文章目录: 三大工厂模式介绍特殊工…

网络适配器出现感叹号

如果更新驱动,再用驱动精灵也修复不了。 如果有vmwarexxxx的虚拟机的网卡,请先删除,然后下载一个ccleaner,清除注册表后,不用重启,感叹号会自动消失。

网络适配器感叹号(代码56)

网络适配器变成感叹号 无论怎么重启\重装网卡驱动都不行, 且查看属性显示类被调用,代码56 先卸载虚拟机, 再去services.msc里停用所有VM开头的服务, 最后下载ccleaner清理注册表, 重启电脑, 顺利解决 如果有帮助到你请点个赞吧QuQ

windows电脑上--网络适配器没有vmwark net8

若电脑之前重置过系统或者由于某些其他原因,导致windows电脑上网络适配器没有vmwark net8,可通过下载软件CCleaner解决。

Win11网络适配器错误代码(10)WLAN消失

记一次WLAN消失的解决方案 电脑在经历今天下午的一次蓝屏重启之后,wlan的图标便消失了 之前电脑已经出现数次蓝屏,但是没有在意 后来发现可能与下载VMware15有关,卸载VMware并重启电脑后并没有解决 之后尝试了服务管理器启动相应的项&…

没有未桥接的主机网络适配器

成功案例,没有桥接的主机网络适配器有可能是你的电脑没有相配的网卡驱动(第三方软件安装的驱动有可能不是完全相配也可能用不了),我这个电脑是重装过后没有去电脑官方下载完驱动的,后面搞东搞西重装系统过后直接去官方…

网络重置后网络适配器丢失和网络适配器前面是黄色叹号怎么办?

我在之前学习过程中有别人遇到过网络重置的问题,但是他们告诉我的解决方法就是重装系统。但我查了有关资料后认为没必要 首先查看自己的网络适配器是否正常,先打开计算机属性,找到设备管理器。 这里添加网卡驱动 选择手动安装(高…

电脑连不上网络,报红叉,网络适配器报黄色警告,错误代码56,解决办法

电脑连不上网络,报红叉,网络适配器报黄色警告,错误代码56 排查: windowX 进入设备管理器,查看网络适配器,如果看到网络适配器报黄色警告,点击黄色感叹号提示错误代码56,是注册表出…