分数 10
全屏浏览题目
切换布局
作者 lhm
单位 河北农业大学
本题目要求编写SQL语句,
查询至少生产两种不同型号的计算机(PC
或便携式电脑
)且机器速度至少为133
的厂商,输出结果按照制造商升序排列。
提示:
本题有三种情况:
(1) 至少生产两种不同PC的厂商
(2) 至少生产两种不同便携式电脑的厂商
(3) 至少生产一种PC且至少生产一种便携式电脑的厂商。
表结构:
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)
);
表样例
product
表:
maker | model | type |
---|---|---|
D | 2001 | 便携式电脑 |
D | 2002 | 便携式电脑 |
E | 2004 | 便携式电脑 |
D | 3001 | 打印机 |
B | 3002 | 打印机 |
A | 1001 | 个人电脑 |
A | 1002 | 个人电脑 |
A | 1003 | 个人电脑 |
D | 1008 | 个人电脑 |
pc
表:
model | speed | ram | hd | cd | price |
---|---|---|---|---|---|
1001 | 133.00 | 16 | 1.60 | 6X | 1595 |
1002 | 120.00 | 16 | 1.60 | 6X | 1399 |
1003 | 166.00 | 32 | 2.50 | 8X | 1999 |
1008 | 180.00 | 32 | 2.00 | 8X | 3699 |
laptop
表:
model | speed | ram | hd | screen | price |
---|---|---|---|---|---|
2001 | 100.00 | 20 | 1.10 | 9.50 | 1999 |
2002 | 133.00 | 12 | 0.75 | 11.30 | 2499 |
2004 | 133.00 | 16 | 1.10 | 11.20 | 3499 |
输出样例:
maker |
---|
A |
D |
select a.maker from
(select pr.maker,pr.model,pr.type,p.speed
from product pr join pc p on p.model=pr.model
union
select pr.maker,pr.model,pr.type,l.speed
from product pr join laptop l on l.model=pr.model) a
where a.speed>=133
group by a.maker
having count(type)>=2