SQL自学:什么是SQL的聚集函数,如何利用它们汇总表的数据

news/2024/12/22 0:06:44/

在 SQL(Structured Query Language,结构化查询语言)中,聚集函数也称为聚合函数,是对一组值进行计算并返回单一值的函数。

一、常见的聚集函数及功能

 1. AVG():用于计算某一列的平均值

例如,在一个包含学生成绩表的数据库中,可以使用 AVG(score)来计算学生成绩的平均分。

2. SUM():计算某一列数值的总和

比如在销售数据表中,可以用 SUM(sales_amount)来计算总销售额。

3. COUNT():统计某一列中值的数量或者统计行数

COUNT(*)统计所有的行数,而 COUNT(column_name)统计特定列中不为 NULL的值的数量。

4. MAX():返回某一列中的最大值。

例如在产品价格表中,可以用 MAX(price)找出最贵的产品价格。

5. MIN():返回某一列中的最小值

如同在温度记录表中,使用 MIN(temperature)找出最低温度。


二、以下是对 SQL 中聚集函数注意事项的详细例子:

(一)聚集函数与 GROUP BY 子句结合使用

假设有一个员工表 employees,包含字段 employee_id(员工编号)、department(部门)、salary(工资)。

sql">SELECT department, AVG(salary) AS avg_salary
FROM employees GROUP BY department; 

这个查询将按照部门对员工进行分组,并计算每个部门的平均工资。例如,可能有部门“销售部”“研发部”“财务部”等,查询结果会显示每个部门的名称以及该部门员工的平均工资。

(二)聚集函数对数值类型列的计算

1. 对于数值类型列,聚集函数能正常工作。

 假设员工表中有一列 age(年龄)是数值类型,使用 AVG(age)可以计算出员工的平均年龄。 使用 SUM(age)可以计算出所有员工年龄总和,但这个在实际场景中可能意义不大。

2. 对于非数值类型列使用聚集函数可能出现问题。 

假设员工表中有一列 name(员工姓名)是字符类型,如果尝试使用 AVG(name)或 SUM(name),数据库会返回错误,因为这些聚集函数不能对字符类型进行数学运算。

(三)聚集函数对 NULL 值的处理

 1. COUNT(*): 假设员工表中有一行数据中某些字段值缺失,即存在 NULL值。使用 COUNT(*) 会统计包含 NULL值的行。

例如,如果有 10 行数据,即使其中某些行的部分字段为 NULL,COUNT(*)的结果仍然是 10。

2. AVG() 和 SUM(): 假设有一个销售表 sales,包含字段 sale_id(销售编号)、amount(销售金额)和 bonus(奖金)。如果某些行的 bonus 字段为 NULL。 当使用 SUM(bonus)计算奖金总和时,那些 bonus为 NULL 的行将被忽略。如果有 5 行数据,其中 3 行的 bonus 分别为 100、200、300,另外 2 行的 bonus 为 NULL,那么 SUM(bonus)的结果为 100 + 200 + 300 = 600。  对于 AVG(bonus),计算平均奖金时同样会忽略 NULL值。

假设上述例子中使用 AVG(bonus),结果为 600 / 3 = 200。

练习

1.编写SQL语句,确定已售出产品的总数(使用OrderItems中的quantity列)​。

2.修改刚刚创建的语句,确定已售出产品项(prod_item)BR01的总数。

3.编写SQL语句,确定Products表中价格不超过10美元的最贵产品的价格(prod_price)​。将计算所得的字段命名为max_price。


http://www.ppmy.cn/news/1536998.html

相关文章

Vue 响应式的本质

在 Vue 开发中,最容易出问题的地方往往是对 Vue 响应式系统的误解。 响应式的核心不在于“数据一变,页面就刷新”,这是表象。真正的本质是数据和函数的关联。 当数据与函数关联后,数据的变化会触发相应函数的重新运行。这里要明…

PLM预训练语言模型Pre-trained Language Model

预训练语言模型(Pre-trained Language Model,PLM) gpt就是一个典型的例子 一、PLM 的定义与概念 预训练语言模型是一种在大规模文本数据上进行无监督学习得到的语言模型。它通过学习语言的统计规律、语法结构和语义表示,为各种自…

vue-live2d看板娘集成方案设计使用教程

文章目录 前言v1.1.x版本:vue集成看板娘(暂不使用,在v1.2.x已替换)集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研:2024.10.2开源方案1:OhMyLive2D(推荐)开源方案2&…

【Webpack--019】TreeShaking

🤓😍Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-前端领域博主 🐱‍🐉若此文你认为写的不错,不要吝啬你的赞扬,求收藏,求评论,求一个大大的赞!👍* &#x…

rtmp协议转websocketflv的去队列积压

websocket server的优点 websocket server的好处:WebSocket 服务器能够实现实时的数据推送,服务器可以主动向客户端发送数据 1 不需要客户端不断轮询。 2 不需要实现httpserver跨域。 在需要修改协议的时候比较灵活,我们发送数据的时候比较…

浅谈C++之Mqtt协议

一、基本介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅模式的"轻量级"通讯协议,它和 Modbus TCP 一样都是基于 TCP/IP 之上的应用层协议。 二、简单用例 在C中实现MQTT通信&#xff…

什么是唯一性约束(UNIQUE Constraint)?

唯一性约束是数据库表设计中的一种完整性约束,用于确保列或一组列中的所有值都是唯一的。 这意味着在一个给定的列或列组内,不能有两个行拥有相同的值。 唯一性约束通常用来维护数据的完整性,并防止重复记录。 在关系型数据库管理系统&…

ctfshow-web 萌新题

给她 spring漏洞 pyload: 1.dirsearch扫描&#xff0c;发现git 2. GitHack工具得到.git文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>…