10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)
一:題目
本題目要求編寫SQL語句, 查詢至少生產(chǎn)兩種不同型號的計算機(PC或便攜式電腦)且機器速度至少為133的廠商,輸出結(jié)果按照制造商升序排列。
提示:
本題有三種情況: (1) 至少生產(chǎn)兩種不同PC的廠商 (2) 至少生產(chǎn)兩種不同便攜式電腦的廠商 (3) 至少生產(chǎn)一種PC且至少生產(chǎn)一種便攜式電腦的廠商。
表結(jié)構(gòu):
CREATE TABLE product ( maker CHAR(20) , --制造商model CHAR(20) NOT NULL, --產(chǎn)品型號type CHAR(20), --產(chǎn)品類型PRIMARY KEY(model) ); CREATE TABLE pc ( model CHAR(20) NOT NULL, --型號speed DECIMAL(6,2), --速度ram INT, --內(nèi)存hd DECIMAL(6,2), --硬盤容量cd CHAR(4), --光驅(qū)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, --內(nèi)存hd DECIMAL(6,2), --硬盤容量screen DECIMAL(6,2), --屏幕大小price INT, --價錢PRIMARY KEY(model),FOREIGN KEY(model) REFERENCES product(model) );二:測試用例
吐槽一下,pta上關(guān)于sql語句沒提供測試用例的地方,著實讓人討厭,但是貼心杰,自己寫了個測試用例來測試自己的碼,現(xiàn)在分享給大家 幫助大家來測試自己的碼
CREATE TABLE product ( maker CHAR(20) , -- 制造商model CHAR(20) NOT NULL, -- 產(chǎn)品型號TYPE CHAR(20), -- 產(chǎn)品類型PRIMARY KEY(model) ); CREATE TABLE pc ( model CHAR(20) NOT NULL, -- 型號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 productVALUES('D','2001','便攜式電腦'),('D','2002','便攜式電腦'),('E','2004','便攜式電腦'),('D','3001','打印機'),('B','3002','打印機'),('A','1001','個人電腦'),('A','1002','個人電腦'),('A','1003','個人電腦'),('D','1008','個人電腦');SELECT * FROM product; INSERT INTO pcVALUES('1001',133),('1002',120),('1003',166),('1008',180);SELECT * FROM pc;INSERT INTO laptopVALUES('2001',100),('2002',133),('2004',133);SELECT * FROM laptop;直接復(fù)制運行就可以
二:分析
– 查詢至少生產(chǎn)兩種不同型號的計算機(PC或便攜式電腦)且機器速度至少為133的廠商,輸出結(jié)果按照制造商升序排列。
– (1) 至少生產(chǎn)兩種不同PC的廠商
– (2) 至少生產(chǎn)兩種不同便攜式電腦的廠商
– (3) 至少生產(chǎn)一種PC且至少生產(chǎn)一種便攜式電腦的廠商。
– 分析:
1.將pc和product表聯(lián)合查詢設(shè)置條件 速度大于 133 查詢出來的 結(jié)果有多個廠商,表1
2.將表1按maker進行分組,統(tǒng)計每個廠商的個數(shù),篩選出大于等于2的廠商 (可以得到廠商和其個數(shù))表2
3.laptop 和 product 和上述過程一樣 表
4.針對體條件三,我們先將pc和product聯(lián)合查詢得到表4,將laptop和product表聯(lián)合查詢 并將表4作為條件 即可滿足條件三
5.將表2和表3表4聯(lián)合起來 并按maker排序
四:上碼
-- 查詢至少生產(chǎn)兩種不同型號的計算機(PC或便攜式電腦)且機器速度至少為133的廠商,輸出結(jié)果按照制造商升序排列。 -- (1) 至少生產(chǎn)兩種不同PC的廠商 -- (2) 至少生產(chǎn)兩種不同便攜式電腦的廠商 -- (3) 至少生產(chǎn)一種PC且至少生產(chǎn)一種便攜式電腦的廠商。-- 分析:1.將pc和product表聯(lián)合查詢設(shè)置條件 速度大于 133 查詢出來的 結(jié)果有多個廠商,表1 -- 2.將表1按maker進行分組,統(tǒng)計每個廠商的個數(shù),篩選出大于等于2的廠商 (可以得到廠商和其個數(shù))表2 -- 3.laptop 和 product 和上述過程一樣 表3 -- 4.針對體條件三,我們先將pc和product聯(lián)合查詢得到表4,將laptop和product表聯(lián)合查詢 并將表4作為條件 即可滿足條件三 -- 5.將表2和表3表4聯(lián)合起來 并按maker排序-- 1. -- select maker -- from pc,product -- where pc.model = product.model -- and pc.speed >= 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 makerfrom(select maker, count(maker)from (select makerfrom pc,productwhere pc.model = product.modeland pc.speed >= 133) as temp1group by maker having count(maker) >= 2 union select maker, count(maker)from (select makerfrom laptop,productwhere laptop.model = product.modeland laptop.speed >= 133) as temp2group by maker having count(maker) >= 2) as temp3unionselect makerfrom laptop,productwhere laptop.model = product.modeland product.maker in (select makerfrom pc,productwhere pc.model = product.model)) as temp4order by maker;總結(jié)
以上是生活随笔為你收集整理的10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10-1 5-1 查询销售便携式电脑但不
- 下一篇: 10-3 5-3 查询生产最高速度的计算