数据库
首页 > 数据库> > 天池龙珠计划SQL_TASK2

天池龙珠计划SQL_TASK2

作者:互联网

Task02:SQL基础查询与排序

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;

一、SELECT语句基础

SELECT <列名>, ……
  FROM <表名>
 WHERE <条件表达式>;

相关法则

二、运算符

三、聚合查询

最常用的聚合函数:
COUNT:计算表中的记录数(行数)
SUM:计算表中数值列中数据的合计值
AVG:计算表中数值列中数据的平均值
MAX:求出表中任意列中数据的最大值
MIN:求出表中任意列中数据的最小值

常用法则

四、对表进行分组

4.1 GROUP BY语句

之前使用聚合函数都是会整个表的数据进行处理,当你想将进行分组汇总时(即:将现有的数据按照某列来汇总统计),使用group by 。
在 GROUP BY 子句中指定的列称为聚合键或者分组列

4.2 聚合键中包含NULL时

会将NULL作为一组特殊数据进行处理

4.3 GROUP BY书写位置

SELECT → 2. FROM → 3. WHERE → 4. GROUP BY

其中前三项用于筛选数据,GROUP BY对筛选出的数据进行处理

4.4 注意点:

五、为聚合结果指定条件

6.1 用HAVING得到特定分组

将表使用GROUP BY分组后,怎样才能只取出其中两组?
这里WHERE不可行,因为,WHERE子句只能指定记录(行)的条件,而不能用来指定组的条件(例如,“数据行数为 2 行”或者“平均值为 500”等)。

可以在GROUP BY后使用HAVING子句。

HAVING的用法类似WHERE

6.2 HAVING特点

HAVING子句用于对分组进行过滤,可以使用数字、聚合函数和GROUP BY中指定的列名(聚合键)。

-- 数字
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type
HAVING COUNT(*) = 2;
-- 错误形式(因为product_name不包含在GROUP BY聚合键中)
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type
HAVING product_name = '圆珠笔';

七、对查询结果进行排序

ORDER BY

默认为升序排列,降序排列为DESC

-- 降序排列
SELECT product_id, product_name, sale_price, purchase_price
  FROM product
 ORDER BY sale_price DESC;
-- 多个排序键
SELECT product_id, product_name, sale_price, purchase_price
  FROM product
 ORDER BY sale_price, product_id;
-- 当用于排序的列名中含有NULL时,NULL会在开头或末尾进行汇总。
SELECT product_id, product_name, sale_price, purchase_price
  FROM product
 ORDER BY purchase_price;

ORDER BY中列名可使用别名

而Group by不可以
因为:SQL在使用 HAVING 子句时 SELECT 语句的执行顺序为:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

标签:TASK2,GROUP,龙珠,子句,product,SQL,聚合,HAVING,SELECT
来源: https://blog.csdn.net/xiaobaizsj/article/details/115458660