写点什么

10-2 5-2 查询至少生产两种不同的计算机 (PC 或便携式电脑) 且机器速度至少为 133 的厂商 (20 分)(思路加详解 + 测试用例

  • 2022 年 5 月 06 日
  • 本文字数:1684 字

    阅读完需:约 6 分钟

speed DECIMAL(6,2), -- 速度


FOREIGN KEY(model) REFERENCES product(model)


);


CREATE TABLE laptop


( model CHAR(20) NOT NULL, -- 型号


speed DECIMAL(6,2), -- 速度


FOREIGN KEY(model) REFERENCES product(model)


);


INSERT INTO product


VALUES('D','2001','便携式电脑'),


('D','2002','便携式电脑'),


('E','2004','便携式电脑'),


('D','3001','打印机'),


('B','3002','打印机'),


('A','1001','个人电脑'),


('A','1002','个人电脑'),


('A','1003','个人电脑'),


('D','1008','个人电脑');


SELECT * FROM product;


INSERT INTO pc


VALUES('1001',133),


('1002',120),


('1003',166),


('1008',180);


SELECT * FROM pc;


INSERT INTO laptop


VALUES('2001',100),


('2002',133),


('2004',133);


SELECT * FROM laptop;


直接复制运行就可以


[](()二:分析


===================================================================


– 查询至少生产两种不同型号的计算机(PC 或便携式电脑)且机器速度至少为 133 的厂商,输出结果按照制造商升序排列。


– (1) 至少生产两种不同 PC 的厂商


– (2) 至少生产两种不同便携式电脑的厂商


– (3) 至少生产一种 PC 且至少生产一种便携式电脑的厂商。


– 分析:


1.将 pc 和 product 表联合查询设置条件 速度大于 133 查询出来的 结果有多个厂商,表 1


2.将表 1 按 maker 进行分组,统计每个厂商的个数,筛选出大于等于 2 的厂商 (可以得到厂商和其个数)表 2


3.laptop 和 product 和上述过程一样 表


4.针对体条件三,我们先将 pc 和 product 联合查询得到表 4,将 laptop 和 product 表联合查询 并将表 4 作为条件 即可满足条件三


5.将表 2 和表 3 表 4 联合起来 并按 maker 排序


[](()四:上码


===================================================================


-- 查询至少生产两种不同型号的计算机(PC 或便携式电脑)且机器速度至少为 133 的厂商,输出结果按照制造商升序排列。


-- (1) 至少生产两种不同 PC 的厂商


-- (2) 至少生产两种不同便携式电脑的厂商


-- (3) 至少生产一种 PC 且至少生产一种便携式电脑的厂商。


-- 分析:1.将 pc 和 product 表联合查询设置条件 速度大于 133 查询出来的 结果有多个厂商,表 1


-- 2.将表 1 按 maker 进行分组,统计每个厂商的个数,筛选出大于等于 2 的厂商 (可以得到厂商和其个数)表 2


-- 3.laptop 和 product 和上述过程一样 表 3


-- 4.针对体条件三,我们先将 pc 和 product 联合查询得到表 4,将 laptop 和 product 表联合查询 并将表 4 作为条件 即可满足条件三


-- 5.将表 2 和表 3 表 4 联合起来 并按 maker 排序


-- 1.


-- select maker


-- from pc,product


-- where pc.model = product.model


-- and pc.spee 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 d >= 133;


-- -- 2.


-- select maker, count(maker)


-- from (select maker


-- from pc,product


-- where pc.model = product.model


-- and pc.speed >= 133) as temp1


-- group by maker having count(maker) >= 2;


-- -- 3.


-- select maker


-- from laptop,product


-- where laptop.model = product.model


-- and laptop.speed >= 133;


-- select maker, count(maker)


-- from (select maker


-- from laptop,product


-- where laptop.model = product.model


-- and laptop.speed >= 133) as temp2


-- group by maker having count(maker) >= 2;


-- 4.


-- select distinct maker


-- from laptop,product


-- where laptop.model = product.model


-- and product.maker in (select maker


-- from pc,product


-- where pc.model = product.model);


select distinct maker


from


(select maker


from


(select maker, count(maker)


from (select maker


from pc,product


where pc.model = product.model

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例_程序员_爱好编程进阶_InfoQ写作社区