—— 预期输出 —— +----------------+-----------------+ | customerNumber | p_customerLevel | +----------------+-----------------+ | 101 | SILVER | +----------------+-----------------+ +----------------+-----------------+ | customerNumber | p_customerLevel | +----------------+-----------------+ | 102 | PLATINUM | +----------------+-----------------+ +----------------+-----------------+ | customerNumber | p_customerLevel | +----------------+-----------------+ | 103 | GOLD | +----------------+-----------------+
时间: 2025-05-26 15:39:27 浏览: 11
### 验证数据库查询结果
为了验证数据库查询的实际输出是否与预期输出一致,可以通过编写 SQL 查询脚本来对比 `customerNumber` 和 `p_customerLevel` 的对应关系。以下是具体方法:
#### 方法一:手动验证
可以直接运行以下 SQL 查询语句来获取实际的客户等级,并将其与预期输出进行人工比对。
```sql
SELECT
customerNumber,
CASE
WHEN creditlimit > 50000 THEN 'PLATINUM'
WHEN creditlimit BETWEEN 10000 AND 50000 THEN 'GOLD'
WHEN creditlimit < 10000 THEN 'SILVER'
ELSE NULL -- 处理异常情况
END AS p_customerLevel
FROM customers;
```
该查询会基于 `creditlimit` 值计算每个客户的等级,并返回对应的 `customerNumber` 和 `p_customerLevel` 列[^1]。
#### 方法二:自动化验证
如果需要更高效的验证方式,可以创建一个临时表存储预期输出,并通过 JOIN 操作自动检测差异。
##### 步骤说明
1. 将预期输出存入一张临时表中。
2. 执行查询并将实际输出与临时表中的数据进行匹配。
3. 报告不一致的结果。
以下是实现代码:
```sql
-- 创建临时表存储预期输出
CREATE TEMPORARY TABLE ExpectedOutput (
customerNumber INT PRIMARY KEY,
p_customerLevel VARCHAR(10)
);
-- 插入预期数据
INSERT INTO ExpectedOutput (customerNumber, p_customerLevel) VALUES
(101, 'SILVER'),
(102, 'PLATINUM'),
(103, 'GOLD');
-- 获取实际输出并与预期输出比较
WITH ActualOutput AS (
SELECT
customerNumber,
CASE
WHEN creditlimit > 50000 THEN 'PLATINUM'
WHEN creditlimit BETWEEN 10000 AND 50000 THEN 'GOLD'
WHEN creditlimit < 10000 THEN 'SILVER'
ELSE NULL
END AS p_customerLevel
FROM customers
)
SELECT
eo.customerNumber AS ExpectedCustomerNumber,
eo.p_customerLevel AS ExpectedLevel,
ao.p_customerLevel AS ActualLevel
FROM ExpectedOutput eo
LEFT JOIN ActualOutput ao ON eo.customerNumber = ao.customerNumber
WHERE eo.p_customerLevel != ao.p_customerLevel OR ao.p_customerLevel IS NULL;
```
这段代码的作用是找出所有不符合预期的记录,并显示它们的期望值和实际值以便进一步分析[^2]。
---
### 注意事项
- 如果某些 `customerNumber` 缺失于实际输出,则可能是因为这些客户未被正确处理或不存在于原始表中。
- 对于超出限制的情况(如信用限额不在定义范围内),应特别注意是否有合理的默认行为或错误提示机制[^1]。
---
阅读全文
相关推荐



















