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
部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
原文地址:https://www.cnblogs.com/MarlonKang/p/12228117.html