汇总数据——聚集函数

这篇博客详细介绍了MySQL中的五个主要聚集函数:AVG()用于计算平均值,忽略NULL值;COUNT()用于计数,可计整个列或特定列非NULL值的数量;MAX()和MIN()分别找到最大和最小值,同样忽略NULL;SUM()则用于求和,同样排除NULL。此外,还提到了聚集不同值的方法和如何组合使用这些函数。

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

1、聚集函数

我们经常需要汇总数据而不用把它们实际检索出来,为方便这种类型的检索,MySQL给出了5个聚集函数,如下:
在这里插入图片描述


1.1 AVG()函数

在这里插入图片描述
在这里插入图片描述
avg()函数忽略列值为null的行。


1.2 count()函数

count()函数进行计数,有2种使用方式:

1.count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值。
2. count(column)对特定列中具有值的行进行计数,忽略
null值。
在这里插入图片描述
在这里插入图片描述


1.3 max()函数

在这里插入图片描述
max()函数忽略列值为null的行。


1.4 min()函数

在这里插入图片描述
min()函数忽略列值为null的行。

### MySQL 中窗口函数聚集函数的区别 #### 场景适用性差异 当需要考虑数据的时间段或上下文信息时,窗口函数更为适合[^1]。例如,在计算移动平均线、累计求和或其他涉及时间序列分析的操作时,窗口函数能够保留原始行数的同时提供所需的信息。 相反,如果仅需对一组特定列进行简单汇总而不关心其他行的影响,则应选用传统的SQL聚合函数来提高效率。这类操作通常包括COUNT()、SUM()、AVG()等标准聚合运算。 #### 功能特性对比 窗口函数允许针对每一行独立应用逻辑处理,并保持输出表中的行数量不变;相比之下,普通的聚合查询会将多行压缩成单一行的结果集[^2]。这意味着通过窗口函数可以获得更加细致化的数据分析视角,而不仅仅是整体层面的统计数据摘要。 此外,值得注意的是,虽然两者都可以实现相似的功能——比如利用OVER子句使常规聚合变为基于分区/排序后的滚动计算形式——但在具体实施方式上存在本质差别: - **聚集函数**:作用于整个分组并返回单一值; - **窗口函数**:遍历每一条记录并在其对应的范围内执行相应操作,最终得到相同数目但经过增强的新字段列表。 #### 语法结构说明 以下是两种类型的典型写法示例: ##### 聚集函数 ```sql SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; ``` 此命令按照部门划分员工群体,并为每个部分生成一个代表性的薪资均值作为新属性加入到结果集中。 ##### 窗口函数 ```sql SELECT employee_id, salary, SUM(salary) OVER (PARTITION BY department ORDER BY hire_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumulative_sum FROM employees; ``` 上述代码片段展示了如何在一个给定的工作单位内部按入职日期先后顺序累加个人薪酬总额的过程。这里的关键在于`OVER()`后面的参数定义了一个滑动视窗机制,它决定了哪些先前的数据项会被纳入当前计算范围之内[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值