首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 第9章 数据查询进阶 #### 9.3 聚合函数查询 在数据库管理中,聚合函数是一类非常重要的SQL工具,它们能够对一组值执行计算并返回单个值。这些函数在处理统计数据、报告生成以及数据分析时尤其有用。在MySQL中,聚合函数广泛用于`SELECT`语句中,以实现对表中数据的汇总和分析。本章节将深入探讨MySQL中的聚合函数,包括它们的用法、实例以及在实际应用中的注意事项。 ##### 9.3.1 聚合函数概述 MySQL支持多种聚合函数,每种函数都有其特定的用途。以下是一些最常用的聚合函数: - **COUNT()**:计算行数。 - **SUM()**:计算数值列中值的总和。 - **AVG()**:计算数值列的平均值。 - **MAX()**:找出列中的最大值。 - **MIN()**:找出列中的最小值。 - **GROUP_CONCAT()**:将来自多个行的列值连接成一个字符串结果。 ##### 9.3.2 COUNT()函数 `COUNT()`函数用于计算表中的行数,或者符合特定条件的行数。它既可以用来计算所有行的数量,也可以仅计算非NULL值的数量。 **基本语法**: ```sql SELECT COUNT(*) FROM table_name; -- 计算所有行 SELECT COUNT(column_name) FROM table_name; -- 计算指定列的非NULL值数量 ``` **示例**: 假设我们有一个名为`employees`的表,包含`id`, `name`, 和 `department`等字段。 ```sql -- 计算employees表中的总行数 SELECT COUNT(*) FROM employees; -- 计算department列中不同值的数量(去重) SELECT COUNT(DISTINCT department) FROM employees; ``` ##### 9.3.3 SUM()和AVG()函数 `SUM()`和`AVG()`函数分别用于计算数值列的总和和平均值。这些函数对于财务分析、销售统计等场景尤为重要。 **基本语法**: ```sql SELECT SUM(column_name) FROM table_name; SELECT AVG(column_name) FROM table_name; ``` **示例**: 假设`employees`表中还有一个`salary`列。 ```sql -- 计算所有员工的总薪水 SELECT SUM(salary) FROM employees; -- 计算平均薪水 SELECT AVG(salary) FROM employees; -- 计算特定部门(如'IT')的平均薪水 SELECT AVG(salary) FROM employees WHERE department = 'IT'; ``` ##### 9.3.4 MAX()和MIN()函数 `MAX()`和`MIN()`函数分别用于找出列中的最大值和最小值。这些函数在需要快速识别数据范围时非常有用。 **基本语法**: ```sql SELECT MAX(column_name) FROM table_name; SELECT MIN(column_name) FROM table_name; ``` **示例**: ```sql -- 找出最高薪水 SELECT MAX(salary) FROM employees; -- 找出最低薪水 SELECT MIN(salary) FROM employees; -- 结合WHERE子句找出特定部门中的最高和最低薪水 SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees WHERE department = 'HR'; ``` ##### 9.3.5 GROUP BY子句与聚合函数 `GROUP BY`子句常与聚合函数一起使用,以根据一个或多个列对结果集进行分组,并对每个分组应用聚合函数。 **基本语法**: ```sql SELECT column_name, AGGREGATE_FUNCTION(column_name) FROM table_name WHERE condition GROUP BY column_name; ``` **示例**: ```sql -- 计算每个部门的员工数量 SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department; -- 计算每个部门的平均薪水 SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; ``` ##### 9.3.6 注意事项 1. **NULL值的处理**:`COUNT(*)`会计算所有行,包括包含NULL值的行;而`COUNT(column_name)`仅计算该列非NULL值的行数。 2. **数据类型**:确保对正确的数据类型使用聚合函数,特别是`SUM()`和`AVG()`,它们要求列是数值类型。 3. **性能考虑**:在使用大量数据的表上执行聚合查询时,应注意查询性能。考虑使用索引、优化查询逻辑或考虑数据分区等策略。 4. **组合使用**:可以在同一个`SELECT`语句中组合使用多个聚合函数,但要注意它们的逻辑一致性。 5. **HAVING子句**:当需要对聚合函数的结果进行过滤时,应使用`HAVING`子句而不是`WHERE`子句,因为`WHERE`子句在数据分组前过滤行,而`HAVING`子句在数据分组和聚合后过滤分组。 ##### 9.3.7 实战案例 假设你是一家电商公司的数据分析师,需要分析销售数据。你有一个名为`orders`的表,包含订单ID、客户ID、订单金额和订单日期等字段。以下是一些使用聚合函数解决实际问题的示例: - **计算总销售额**: ```sql SELECT SUM(order_amount) AS total_sales FROM orders; ``` - **找出销售额最高的月份**: ```sql SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, SUM(order_amount) AS month_sales FROM orders GROUP BY month ORDER BY month_sales DESC LIMIT 1; ``` - **计算每个客户的平均订单金额**: ```sql SELECT customer_id, AVG(order_amount) AS avg_order_amount FROM orders GROUP BY customer_id; ``` 通过这些示例,我们可以看到聚合函数在数据分析和报告生成中的强大功能。它们不仅简化了复杂的数据处理任务,还提供了深入理解数据结构的途径。在《MySQL从入门到精通(三)》的后续章节中,我们将继续探索更多高级查询技巧和MySQL的高级特性,以帮助读者全面掌握MySQL数据库管理系统的使用。
上一篇:
9.2.13 用LIMIT限制查询结果的数量
下一篇:
9.3.1 COUNT()统计函数
该分类下的相关小册推荐:
MySQL从入门到精通(四)
细说MySQL(零基础到高级应用)
MySQL从入门到精通(五)
MySQL必会核心问题
SQL零基础到熟练应用(增删改查)
MySQL 实战 45 讲
MySQL8.0入门与实践
MySQL从入门到精通(二)
MySQL从入门到精通(一)