【聚合函数、分组、排序笔记】
1.聚合函数
1.1用途:对数据集进行统计计算,返回单一汇总值。
-
统计总数:
COUNT(用户数)
-
计算平均值:
AVG(销售额)
-
求和:
SUM(订单金额)
-
找极值:
MAX(温度)、MIN(库存)
示例:
SELECT SUM(sales) AS total_sales FROM orders; -- 计算总销售额
1.2常用聚合函数
函数 | 作用 | 示例 |
---|---|---|
COUNT | 统计行数(或非空值数) | COUNT(*) 统计所有行(含空值) |
SUM | 求和 | SUM(sales) 计算某列的总和 |
AVG | 计算平均值 | AVG(score) 求某列的平均值 |
MAX | 找最大值 | MAX(price) 找某列的最大值 |
MIN | 找最小值 | MIN(temperature) 找某列的最小值 |
GROUP_CONCAT | 合并字符串(MySQL) | GROUP_CONCAT(name) 合并分组内的字符串 |
1.3核心用法
基本语法
SELECT 聚合函数(列名) FROM 表名 [WHERE 条件];
示例:
-- 计算订单总金额
SELECT SUM(amount) AS total_amount FROM orders;
-- 统计用户总数(排除 NULL)
SELECT COUNT(user_id) FROM users;
结合 GROUP BY
分组
聚合函数常与 GROUP BY
配合,按指定列分组统计:
-- 按部门统计平均工资
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
结合 DISTINCT
去重
对唯一值进行统计:
-- 统计不重复的城市数量
SELECT COUNT(DISTINCT city) FROM customers;
实际应用场景
-
业务指标统计
总销售额、日均活跃用户数(DAU)、订单平均金额等。 -
数据对比分析
按地区/时间维度对比销量、用户增长率等。 -
极值查找
找出最高分、最低库存、最畅销商品等。
2.分组
2.1分组:功能通过将数据按特定维度划分,将分散的信息归类为逻辑单元,使统计和分析更具针对性。
分组的典型应用场景
-
多维分析
按不同属性(如时间、地区、类别)拆分数据,观察指标变化。例如:-
按周统计网站访问量,分析流量波动。
-
按用户年龄段分组,计算消费金额均值。
-
-
数据去重与统计
结合COUNT(DISTINCT 列名)
,统计分组内唯一值的数量。例如:-
统计每个城市的独立访客数。
-
-
分层汇总
在复杂报表中,通过多列分组实现层级汇总。例如:
-- 按年份和季度统计销售额
SELECT year, quarter, SUM(sales)
FROM orders
GROUP BY year, quarter;
2.2分组的注意事项
-
分组列的选择
-
SELECT
后的列必须满足以下条件之一:-
出现在
GROUP BY
子句中(分组依据)。 -
被聚合函数包裹(如
SUM(列名)
)。
-
-
错误示例:
SELECT product, price FROM orders GROUP BY product;
(price
未被分组或聚合,导致多值冲突)。
-
3排序
3.1当数据像未分类的快递包裹堆满仓库时,排序就是那双整理的手。它让混乱的表格瞬间变得像钢琴键般整齐排列,指尖滑动间便能捕捉到隐藏的节奏与规律。
3.2排序的基础语法与逻辑
通过 ORDER BY
子句定义排序规则,支持单列或多列排序:
SELECT 列1, 列2
FROM 表名
ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC];
3.3多列排序的优先级
当单列存在重复值时,可通过多列排序细化规则。左侧列优先级高于右侧列:
-- 先按部门升序,部门相同时按工资降序
SELECT department, name, salary
FROM employees
ORDER BY department ASC, salary DESC;
3.4排序的典型应用场景
-
排行榜生成
-
按销量、评分、点击量等指标生成 TOP N 列表。
-
-
时间序列分析
-
按日期排序观察趋势(如用户增长、收入波动)。
-
-
分层展示
-
优先展示重要数据(如VIP客户、紧急任务)。
-