ch02: 基础查询与排序作业

练习题-第一部分

2.1

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

SELECT product_name,regist_date
FROM product
WHERE regist_date>'2009-04-28';

2.2

请说出对product 表执行如下3条SELECT语句时的返回结果。

SELECT *
FROM product
WHERE purchase_price = NULL;

显示没有;但也不会报错,NULL值不能用来做四则运算,NULL值是一个未知数;

SELECT *
  FROM product
 WHERE purchase_price <> NULL;

显示没有;但也不会报错,NULL值不能用来做四则运算,NULL值是一个未知数;

SELECT *
  FROM product
 WHERE product_name > NULL;

显示没有;但也不会报错,NULL值不能用来做四则运算,NULL值是一个未知数;

2.3

2.2.3 章节中的SELECT语句能够从 product 表中取出“销售单价(sale_price)比进货单价(purchase_price)高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示:

product_name | sale_price | purchase_price 
-------------+------------+------------
T恤衫        |   1000    | 500
运动T恤      |    4000    | 2800
高压锅       |    6800    | 5000
SELECT product_name, sale_price, prurchase_price
  FROM product
 WHERE sale_price >= 1000 AND product_name <> "菜刀";

SELECT product_name, sale_price, prurchase_price
  FROM product
 WHERE sale_price >= 1000 AND sale_price <> 3000;

2.4

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

提示:销售单价打九折,可以通过 sale_price 列的值乘以0.9获得,利润可以通过该值减去 purchase_price 列的值获得。

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

练习题-第二部分

2.5

请指出下述SELECT语句中所有的语法错误。

SELECT product_id, SUM(product_name)
--本SELECT语句中存在错误。
  FROM product 
 GROUP BY product_type 
 WHERE regist_date > '2009-09-01';

错误:

1.SUM 只能对数值类型的数据进行求和;
2. SELECT 语句后面要跟着(聚合键),才可以跟GROUP BY 一起使用;
3.WHERE 过滤子句 应该在FROM 之后,不能在GROUP BY 后,因为执行顺序是先执行WHERE
4. GROUP BY 组合子句之后,如果还想进行过滤,应该使用 HAVING 函数

2.6

请编写一条SELECT语句,求出销售单价( sale_price 列)合计值大于进货单价( purchase_price 列)合计值1.5倍的商品种类。执行结果如下所示。

product_type | sum  | sum 
-------------+------+------
衣服         | 5000 | 3300
办公用品      |  600 | 320

SELECT product_type, sum(sale_price) AS sum , sum(purchase_price) AS sum
	FROM productions
     GROUP BY product_type
    HAVING sum(sale_price) > sum(purchase_price)*1.5;

2.7

此前我们曾经使用SELECT语句选取出了product(商品)表中的全部记录。当时我们使用了 ORDER BY 子句来指定排列顺序,但现在已经无法记起当时如何指定的了。请根据下列执行结果,思考 ORDER BY 子句的内容。

SELECT * 
FROM product
ORDER BY regist_date DESC, sale_price;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值