m0_62138486 2023-04-12 08:46 采纳率: 98.6%
浏览 26
已结题

显示运行时错误,哪里有问题,求解答

10-7 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商

本题目要求编写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 maker
from product inner join pc on product.model and pc.model inner join laptop on product.model and laptop.model as a
group by a.maker
having a.speed>=133 and count(a.maker)>=2;

img

  • 写回答

4条回答 默认 最新

  • CSDN专家-文盲老顾 2023-04-12 09:34
    关注
    
    
    select maker
        ,sum(case when speed>=133 then 1 else 0 end) `speed133+`
        ,sum(case when type='个人电脑' then 1 else 0 end) 个人电脑
        ,sum(case when type='便携式电脑' then 1 else 0 end) 便携式电脑
        ,count(0) 种类
        ,max(speed) as 最高速
    from product p
    left join (
        select * from pc
        union all
        select * from laptop
    ) b on p.model=b.model
    group by maker
    order by maker
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度