Day 2:
本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;
比较运算符:<>不等于
逻辑运算符:NOT , AND , OR
聚合查询:
聚合函数,以下是最常用的五个聚合函数:(在聚合函数中适用DISTINCT,可去重)
- COUNT:计算表中的记录数
- SUM/AVG:只适用于数值型
- MAX/MIN:适用于所有类型
对表分组:
GROUP BY
SELECT <列名1>,<列名2>, <列名3>, ……
FROM <表名>
WHERE ....
GROUP BY <列名1>, <列名2>, <列名3>, ……
HAVING ....;
为聚合函数添加条件:HAVING可用于对分组进行过滤,可以使用数字、聚合函数和GROUP BY中指定的列名(聚合键)
Note:
- GROUP BY 不能使用别名分组
- ORDER BY: 对结果排序,默认升序,降序:DESC;DESC 默认NULL在最后面,可使用 <列名> IS NULL DESC 将NULL放在最前面;
- ORDER BY可以使用别名
练习题:
SELECT `product_name` , `regist_date` FROM `product` WHERE `regist_date` >'2009-04-28';
返回 购买价格purchase_prise为NULL的记录;
返回 购买价格purchase_prise不为NULL的记录;
返回 NULL
SELECT product_name,sale_price,purchase_price FROM `product` WHERE `sale_price` >= `purchase_price` + 500;
SELECT product_name,sale_price,purchase_price FROM `product` WHERE `purchase_price` <= `sale_price` -500;
SELECT
`product_name`,
`product_type`,
0.9 * `sale_price` - `purchase_price` as profit
FROM `product`
WHERE 0.9 * `sale_price` - `purchase_price`>100
and ( `product_type`='办公用品' or `product_type` = '厨房用具');
练习5
SUM只能用于数值类型数据,product_name是字符型
GROUP BY用于语句尾部
SELECT中选择的列名只能是分组的列名,即 product_id.
练习6
SELECT `product_type`,
SUM(`sale_price`) as sum,
SUM(`purchase_price`) as sum
FROM `product`
GROUP BY `product_type`
HAVING SUM( `sale_price`)>1.5* SUM( `purchase_price`);
练习7
SELECT *
FROM `product`
ORDER BY `regist_date` IS NOT NULL ,`regist_date` DESC, `sale_price`