若价格大于3000,替换为“很昂贵产品”,列标题更改为“评价”。
SELECT 产品编号,产品名称,评价= CASE
WHEN 价格<= 1000 THEN '廉价产品'
WHEN 价格> 1000 AND 价格<= 2000 THEN '一般产品' WHEN 价格> 2000 AND 价格<= 3000 THEN '昂贵产品' ELSE '很昂贵产品' END FROM CP
截图如下:
(4)求各产品编号、名称和产品总值。
SELECT 产品编号,产品名称,产品总值 = 价格 * 库存量 FROM CP
截图如下:
(5)查询至少购买了至少一种产品的客户编号(不重复)。
SELECT DISTINCT 客户编号
FROM CPXSB
截图如下:
(6)查询价格在1000-2000的产品信息。
SELECT * FROM CP
WHERE 价格BETWEEN 1000 AND 2000
截图如下:
(7)查询产品名称含有”冰箱_A”的产品情况。
SELECT * FROM CP
WHERE 产品名称LIKE '冰箱\\_A' ESCAPE '\\'
截图如下:
2、使用分组和集函数
(1)计算所有产品总价格。
SELECT SUM(价格* 库存量) 总价格 FROM CP
截图如下:
(2)求各种产品2004年3月18日销售额。
SELECT DISTINCT 产品编号,SUM(销售额) 销售额 FROM CPXSB
WHERE 销售日期= '2004-03-18'
GROUP BY 产品编号
截图如下:
(3)求购买二种以上产品的客户编号。
SELECT 客户编号 FROM CPXSB
GROUP BY 客户编号HAVING COUNT(*) >= 2
截图如下:
四、试验心得
通过本次课程的学习与试验,学会了如何使用T-SQL语句来进行单表的查询,仍然由于对语句的不熟悉,开始实验的时候总要靠书本才能写出完整的语句,不过写了几次后,便能独立写出,相比上一次试验有了很大的提高。
试验四 连接查询
一、试验目的与要求
熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。
二、试验内容
对CPXS数据库,完成如下连接查询: 1、内连接(要求用两种方式书写)
(1)查询在2004年3月18日有销售的产品名称(不允许重复)。
(2)查询名称为“家电市场”的客户在2004年3月18日购买的产品名称和数量。 2、外连接
(1)查找所有产品情况及销售他们的销售日期、购买他们的客户编号和数量,若产品没有销售记录,也要包括其情况。
(2)查找所有购买情况,若客户没有购买产品,也要包括其情况。
三、试验步骤
1、内连接(要求用两种方式书写)
(1)查询在2004年3月18日有销售的产品名称(不允许重复)。 SQL标准语句:
SELECT DISTINCT CP.产品名称 FROM CP,CPXSB
WHERE CP.产品编号= CPXSB.产品编号 AND 销售日期= '2004-03-18'
T-SQL扩展语句:
SELECT DISTINCT CP.产品名称 FROM CPXSB INNER JOIN CP ON (CP.产品编号= CPXSB.产品编号 AND 销售日期= '2004-03-18')
截图如下: