日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:題目

本題目要求編寫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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。