SQL基础学习笔记--2--聚合与排序

这篇博客详细介绍了SQL中的聚合函数,包括COUNT、SUM、AVG、MAX和MIN的使用,以及如何结合DISTINCT进行计算。还探讨了GROUP BY子句的运用,强调了WHERE与GROUP BY的执行顺序,并解释了HAVING子句在聚合结果指定条件时的作用。此外,文章还讲解了ORDER BY子句用于查询结果排序的各种细节,包括指定多个排序键、处理NULL值和使用列别名的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 聚合函数

 

2.1.1 5个常用的汇总函数

COUNT 计算表中的记录数(行数)

SUM 计算表中数值列中数据的合计值

AVG 计算表中数值列中数据的平均值

MAX 求出表中任意列中数据的最大值

MIN 求出表中任意列中数据的最小值

2.1.2 COUNT

COUNT(*) 得到包含NULL的数据行数

COUNT(<列名>) 某一列不含NULL的行数

2.1.3 计算折合值

SUM(<列名>) 某一列的和值(NULL不计算在内)

AVG(<列名>) 某一列的平均值(NULL不计算在内)

MAX(<列名>) 某一列的最大值(NULL不计算在内)

MIN (<列名>) 某一列的最小值(NULL不计算在内)

2.1.4 聚合函数与DISTINCT联合使用

SELECT COUNT(DISTINCT product_type) FROM product

注: DISTINCT必须放在括号中,计算之前先去重

 

2.2 对表进行分组

 

2.2.1 GROUP BY 子句

SELECT product_type, COUNT(*) FROM product GROUP BY product_type

 

2.2.2 GROUP BY 和 WHERE 联合使用

SELECT product_type, COUNT(*) FROM product WHERE purchase_price > 500 GROUP BY product_type

注: where 在 from 之前 , 在 group by 之后

 

当 GROUP BY 和 WHERE 联合使用时,SELECT语句的执行顺序为:

FROM → WHERE → GROUP BY → SELECT

 

2.2.3 特别注意

1 . 当使用GROUP BY分组时 , NULL也是一个组

2 . 不要在SELECT子句中写多余的列(非分组,非聚合)

3 . 不要在WHERE子句中使用聚合函数

 

2.3 为聚合结果指定条件

 

2.3.1 HAVING子句

注: where只能对记录指定条件 , 而having可以对组指定条件

SELECT sale_price,COUNT(*) FROM product GROUP BY sale_price HAVING COUNT(*) >= 2

 

当有些条件既可以where子句中,又可以写在having子句中时,应该写在where字句中,因为速度更快,返回时间更短

 

2.4 对查询结果进行排序

 

2.4.1 ORDER BY子句

默认的查询结果是随机排序

ORDER BY 关键字指定升序与降序

升序排列 :

ORDER BY <字段>

ORDER BY <字段> AES

降序排列 :

ORDER BY <字段> DESC

2.4.2 指定多个排序键

多个排序键的字段之间用逗号隔开

注: 优先使用左侧的键 , 如果该列存在相同的值 , 再参考右侧的键

 

2.4.3 NULL的顺序

含有NULL的列作为排序键时 , NULL会在结果的开头或者末尾汇总显示

2.4.4 在排序键中使用显示用的别名

在ORDER BY子句中可以使用别名进行排序

 

2.4.5 ORDER BY 子句中可以使用的列

<1> ORDER BY字句中可以使用存在于表中但不在SELECT子句中的字段

SELECT sale_price ,product_name FROM product ORDER BY product_id DESC

<2> ORDER BY字句中可以使用聚合函数

SELECT product_type, COUNT(*) FROM product GROUP BY product_type ORDER BY COUNT(*) DESC

<3>ORDER BY字句中使用列编号(不推荐使用,即将弃用)

例一与例二效果一样

例一:

SELECT product_type,product_name,product_id FROM product ORDER BY product_type DESC,product_id 

例二:

SELECT product_type,product_name,product_id FROM product ORDER BY 1 DESC,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值