sql-server-2008 - SQL-EX.RU (Exercise #137) -- 在第二个检查数据库上返回不正确的数据集
问题描述
我的查询有什么问题?
简短的数据库描述“计算机公司”:
数据库方案由四个表组成: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed, ram, hd, screen, price) Printer(代码、型号、颜色、类型、价格)产品表包含有关制造商、型号和产品类型(“PC”、“笔记本电脑”或“打印机”)的数据。假定产品表中的型号对于所有制造商和产品类型都是唯一的。PC 表中的每台个人计算机均由唯一代码明确标识,并通过其型号(外键指产品表)、处理器速度(以 MHz 为单位)-速度字段、RAM 容量(以 Mb 为单位)-ram 进行额外表征,硬盘驱动器容量(以 Gb 为单位)- hd,CD-ROM 速度(例如,'4x')- cd,及其价格。笔记本电脑桌类似于PC桌,除了 CD-ROM 速度,它包含屏幕大小(以英寸为单位) - 屏幕。对于打印机表中的每个打印机型号,其输出类型('y' 表示彩色,'n' 表示单色)- 颜色字段、打印技术('Laser'、'Jet' 或 'Matrix')- 类型和价格被指定。
我的结果如下:
“您的查询在第一个(可用)数据库上返回了正确的数据集,但在第二个检查数据库上返回了不正确的数据集。错误的记录数(超过 7 个)”
;WITH ORD_NUM_CTE
AS
(
SELECT ROW_NUMBER() OVER (ORDER BY model) 'ORD_NUM'
, *
FROM Product
)
SELECT onc.[type]
, COALESCE((select AVG(price)
from Printer
WHERE model = onc.model)
, (select AVG(price)
from Laptop
WHERE model = onc.model)
, (select AVG(price)
from PC
WHERE model = onc.model)
) 'avg_price'
--, *
FROM ORD_NUM_CTE onc
left JOIN PC pc ON onc.model = pc.model
left JOIN Laptop lt ON onc.model = lt.model
left JOIN Printer pr ON onc.model = pr.model
WHERE onc.ORD_NUM % 5 = 0
解决方案
推荐阅读
- javascript - 我希望我的智能合约与 USDT 一起使用
- python - 在 Windows 上使用 Anaconda 安装 Qiskit 失败
- javascript - 如何正确使用本地存储?
- javascript - 尝试在反应中初始化项目
- javascript - 数组中有多少对象类型?
- r - R中的时间格式和计算
- c# - Entity Framework Core 5.0 警告限制运算符 ('Skip'/'Take') 没有'OrderBy' 运算符
- java - 使用while循环java消除数组中的重复项
- kubernetes - k8s.io/client-go/pkg/api/v1 已退役,如何解析 event.Object?
- html - 切换拉伸顶部导航栏