SQL基础教程(第2版)第3章 聚合与排序:练习题

存在以下 3 个错误。
1.使用了字符类型的列(product_name)作为 SUM 函数的参数。
>> 解答
SUM 函数只能使用数值类型的列作为参数。

2WHERE 子句写在了 GROUP BY 子句之后。
>> 解答
WHERE 子句必须写在 GROUP BY 子句之前。

3SELECT 子句中存在 GROUP BY 子句中未指定的列(product_id)。
>> 解答
使用 GROUP BY 子句时,书写在 SELECT 子句中的列有很多限制。 GROUP BY
子句中未指定的列不能书写在 SELECT 子句之中。


在 WHERE 子句中指定 regist_date 的大小关系作为条件并没有什么问题。
存在以下 3 个错误

子句的书写顺序 ,1. SELECT → 2. FROM → 3. WHERE → 4. GROUP BY


 

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

本习题中是登记日期(NULL 排在开头还是末尾会根据 DBMS 不同而不同,无需考虑)。因此我们能够推断出首先是按照登记日期的降序进行排序的。
接下来,对于日期相同的记录,例如同为“2009-09-20”的 3 条记录,可以看出是按照销售单价的升序进行排序的。

SELECT *
  FROM Product
 ORDER BY regist_date DESC, sale_price;
View Code
posted @ 2020-01-22 10:57  Marlon康  阅读(224)  评论(0编辑  收藏  举报