博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL(四)--练习题
阅读量:4316 次
发布时间:2019-06-06

本文共 3631 字,大约阅读时间需要 12 分钟。

 


2.1 编写一条 SQL 语句,从 Product(商品)表中选取出“登记日期(regist_date)在 2009 年 4 月 28 日之后”的商品。查询结果要包含 product_name 和 regist_date 两列。

SELECT product_name, regist_date  FROM Product where regist_data > '2009-04-28';

2.4 请写出一条 SELECT 语句,从 Product 表中选取出满足“销售单价打九折之后利润高于 100 日元的办公用品和厨房用具”条件的记录。查询结果要包括 product_name 列、product_type 列以及销售单价打九折之后的利润(别名设定为 profit)。

SELECT product_name, product_type,       sale_price * 0.9 - purchase_price AS profit  FROM Product WHERE sale_price * 0.9 - purchase_price > 100   AND (product_type = '办公用品' OR product_type = '厨房用具'));

 


3.2 请编写一条 SELECT 语句,求出销售单价(sale_price 列)合计值是进货单价(purchase_price 列)合计值 1.5 倍的商品种类。

SELECT product_type, SUM(sale_price), SUM(purchase_price)  FROM Product GROUP BY product_typeHAVING SUM(sale_price) > SUM(purchase_price) * 1.5;

 


4.2 有一张包含 3 条记录的 Product 表。

使用如下的 INSERT 语句复制这 3 行数据,应该就能够将表中的数据增加为 6 行。请说出该语句的执行结果。

INSERT INTO Product SELECT * FROM Product;

违反了商品编号列的主键约束,即不能存在主键重复的记录,不能更新操作。

4.3 以练习 4.2 中的 Product 表为基础,再创建另外一张包含利润列的新表 ProductMargin(商品利润)。

INSERT INTO ProductMargin (product_id, product_name, sale_price, purchase_price, margin)SELECT product_id, product_name, sale_price, purchase_price, sale_price - purchase_price  FROM Product;

4.4 对练习 4.3 中的 ProductMargin 表的数据进行如下更改。

将运动 T 恤的销售单价从 4000 日元下调至 3000 日元。

根据上述结果再次计算运动 T 恤的利润。

UPDATE ProductMargin   SET sale_price = 3000,       margin = sale_price - purchase_price WHERE product_id = '0003';

 


5.1 创建出满足下述三个条件的视图(视图名称为ViewPractice5_1)。使用Product(商品)表作为参照表,假设表中包含初始状态的8 行数据。

条件1: 销售单价大于等于1000 日元。

条件2: 登记日期是2009 年9 月20 日。
条件3: 包含商品名称、销售单价和登记日期三列。

CREATE VIEWS ViewPractice5_1 ASSELECT product_name, sale_price, regist_dateFROM ProductWHERE sale_price>=1000AND regist_date= '2009-09-20';

5.3 请根据如下结果编写 SELECT 语句,其中 sale_price_all 列为全部商品的平均销售单价。

SELECT product_id,       product_name,       product_type,       sale_price,       (SELECT AVG(sale_price) FROM Product) AS sale_price_all  FROM Product;

注意:使用GROUP BY子句时,SELECT子句中不能出现聚合键之外的列名。

5.4 请根据习题 5.1 中的条件编写一条 SQL 语句,创建一幅包含如下数据的视图(名称为 AvgPriceByType)。

执行结果

product_id product_name product_type sale_price avg_sale_price
0001 T恤衫 衣服 1000 2500.0000000000000000
0002 打孔器 办公用品 500 300.0000000000000000
0003 运动T恤 衣服 4000 2500.0000000000000000
0004 菜刀 厨房用具 3000 2795.0000000000000000
0005 高压锅 厨房用具 6800 2795.0000000000000000
0006 叉子 厨房用具 500 2795.0000000000000000
0007 擦菜板 厨房用具 880 2795.0000000000000000
0008 圆珠笔 办公用品 100 300.0000000000000000

提示:其中的关键是 avg_sale_price 列。这里需要计算出的是各商品种类的平均销售单价。

CREATE VIEWS AS AvgPriceByTypeSELECT product_id, product_name, product_type, sale_price,       (SELECT AVG(sale_price)        FROM Product AS P2        WHERE P1.product_type = P2.product_type        GROUP BY P2.product_type)  AS avg_sale_priceFROM Product AS P1

 


6.2 按照销售单价(sale_price)对 Product(商品)表中的商品进行如下分类。

低档商品 :销售单价在 1000 日元以下(T 恤衫、办公用品、叉子、擦菜板、圆珠笔)

中档商品 :销售单价在 1001 日元以上 3000 日元以下(菜刀)

高档商品 :销售单价在 3001 日元以上(运动 T 恤、高压锅)

请编写出统计上述商品种类中所包含的商品数量的 SELECT 语句。

执行结果

low_price mid_price high_price
5 1 2

 

SELECT SUM(CASE WHEN sale_price <= 1000                THEN 1 ELSE 0 END) AS low_price,       SUM(CASE WHEN sale_price BETWEEN 1001 AND 3000                THEN 1 ELSE 0 END) AS mid_price,       SUM(CASE WHEN sale_price >= 3001                THEN 1 ELSE 0 END) AS high_price FROM Product;

 


7.2 两针表外联结的结果中,高压锅和圆珠笔 2 条记录的商店编号(shop_id)和商店名称(shop_name)都是NULL。请使用字符串“不确定”替换其中的NULL。

SELECT COALESCE(SP.shop_id, '不确定') AS shop_id,       COALESCE(SP.shop_name, '不确定') AS shop_name,       P.product_id,       P.product_name,       P.sale_price  FROM ShopProduct SP RIGHT OUTER JOIN Product P    ON SP.product_id = P.product_idORDER BY shop_id;

转载于:https://www.cnblogs.com/lidyan/p/7087111.html

你可能感兴趣的文章
component-based scene model
查看>>
Echart输出图形
查看>>
hMailServer搭建简单邮件系统
查看>>
从零开始学习jQuery
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
opacity半透明兼容ie8。。。。ie8半透明
查看>>
CDOJ_24 八球胜负
查看>>
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>
基于Angular5和WebAPI的增删改查(一)
查看>>
windows 10 & Office 2016 安装
查看>>
最短路径(SP)问题相关算法与模板
查看>>
js算法之最常用的排序
查看>>
Python——交互式图形编程
查看>>