SQL基础教程(第2版)第3章 聚合与排序:练习题
存在以下 3 个错误。 1.使用了字符类型的列(product_name)作为 SUM 函数的参数。 >> 解答 SUM 函数只能使用数值类型的列作为参数。 2. WHERE 子句写在了 GROUP BY 子句之后。 >> 解答 WHERE 子句必须写在 GROUP BY 子句之前。 3. SELECT 子句中存在 GROUP BY 子句中未指定的列(product_id)。 >> 解答 使用 GROUP BY 子句时,书写在 SELECT 子句中的列有很多限制。 GROUP BY 子句中未指定的列不能书写在 SELECT 子句之中。 在 WHERE 子句中指定 regist_date 的大小关系作为条件并没有什么问题。
子句的书写顺序 ,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;
本习题中是登记日期(NULL 排在开头还是末尾会根据 DBMS 不同而不同,无需考虑)。因此我们能够推断出首先是按照登记日期的降序进行排序的。
接下来,对于日期相同的记录,例如同为“2009-09-20”的 3 条记录,可以看出是按照销售单价的升序进行排序的。
SELECT * FROM Product ORDER BY regist_date DESC, sale_price;
部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
如需获取教程配套的资源文件和一对一专属答疑支持,请加vx:kangmf24联系作者。