wonderful-sql Task02
基础查询与排序
相关法则
- 在SELECT语句中使用DISTINCT可以删除重复行。
- 希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。
运算符优先级

聚合函数应用法则
- COUNT 聚合函数运算结果与参数有关,COUNT(*) / COUNT(1) 得到包含 NULL 值的所有行,COUNT(<列名>) 得到不包含 NULL 值的所有行。
- 聚合函数不处理包含 NULL 值的行,但是 COUNT(*) 除外。
- MAX / MIN 函数适用于文本类型和数字类型的列,而 SUM / AVG 函数仅适用于数字类型的列。
- 在聚合函数的参数中使用 DISTINCT 关键字,可以得到删除重复值的聚合结果。
练习题
1. 编写一条SQL语句,从 product(商品) 表中选取出“登记日期(regist_date)在2009年4月28日之后”的商品,查询结果要包含 product name 和 regist_date 两列。
SELECT
product_name,
regist_date
FROM
product
WHERE
regist_date < '2009-04-28';

2. 请说出对product 表执行如下3条SELECT语句时的返回结果。
1.
SELECT *
FROM product
WHERE purchase_price = NULL;
返回结果为空
2.
SELECT *
FROM product
WHERE purchase_price <> NULL;
返回结果为空
3.
SELECT *
FROM product
WHERE product_name > NULL;
返回结果为空
3.
SELECT
product_name,
sale_price,
purchase_price
FROM
product
WHERE
( sale_price - purchase_price ) >= 500;

4.
SELECT
product_name,
product_type,
( sale_price * 0.9 - purchase_price ) AS profit
FROM
product
WHERE
product_type IN ( '办公用品', '厨房用具' )
AND ( sale_price * 0.9 - purchase_price ) > 100;

5. 请指出下述SELECT语句中所有的语法错误。
SELECT product_id, SUM(product_name)
--本SELECT语句中存在错误。
FROM product
GROUP BY product_type
WHERE regist_date > '2009-09-01';
- SUM函数使用的是全角的括号
- SUM函数不能用于文本类型
- GROUP BY子句应该在WHERE子句之后
- 启用ONLY_FULL_GROUP_BY时,SELECT列表中的非聚合列(如product_id)必须在GROUP BY子句中出现
6.
SELECT
product_type,
SUM( sale_price ),
SUM( purchase_price )
FROM
product
GROUP BY
product_type
HAVING
SUM( sale_price ) > SUM( purchase_price ) * 1.5;

7.
SELECT
*
FROM
product
ORDER BY
-regist_date, purchase_price;


浙公网安备 33010602011771号