为使用聚合函数的列设置别名,什么意思,不明白,什么是聚合函数。
SELECT MAX(market_price) AS "市场价最高",MIN(market_price) AS "市场价最低" FROM goods;
聚合函数与别名详解
您问的这个问题很关键,让我从最基础的概念开始讲解。
一、这段 SQL 在做什么?
sql
SELECT MAX(market_price) AS "市场价最高", MIN(market_price) AS "市场价最低" FROM goods;
一句话概括:从商品表中找出市场价的最高值和最低值。
假设原表数据:
| goods_name | market_price |
|---|---|
| 手机 | 2999 |
| 电脑 | 5999 |
| 耳机 | 199 |
| 键盘 | 399 |
查询结果:
| 市场价最高 | 市场价最低 |
|---|---|
| 5999 | 199 |
二、什么是聚合函数?
词源
| 单词 | 词源 | 含义 |
|---|---|---|
| aggregate | 拉丁语 aggregatus(聚集、集合) | 把多个东西聚在一起 |
| function | 拉丁语 functio(执行、功能) | 函数、功能 |
通俗理解
聚合函数就是把多行数据的某个列"聚"在一起,计算出一个结果。
text
┌─────────────────────────────────────────────┐ │ 多行数据 聚合函数 │ │ ┌─────────┐ │ │ │ 2999 │ │ │ │ 5999 │ ──────MAX()──────► 5999 │ │ │ 199 │ │ │ │ 399 │ │ │ └─────────┘ │ │ ↑ │ │ market_price 列 │ └─────────────────────────────────────────────┘
三、常见聚合函数
| 函数 | 英文 | 含义 | 示例 | 结果 |
|---|---|---|---|---|
MAX() | Maximum | 最大值 | MAX(price) | 最高价格 |
MIN() | Minimum | 最小值 | MIN(price) | 最低价格 |
SUM() | Sum | 总和 | SUM(price) | 所有价格加起来 |
AVG() | Average | 平均值 | AVG(price) | 价格的平均值 |
COUNT() | Count | 计数 | COUNT(*) | 总行数 |
四、聚合函数的执行过程
以 MAX(market_price) 为例
text
步骤1:读取 market_price 列的所有值 ┌─────┐ │2999 │ │5999 │ ← 逐一比较 │199 │ │399 │ └─────┘ 步骤2:找出最大值 比较过程:2999 → 5999(更大)→ 199 → 399 最终结果:5999 步骤3:返回结果 输出:5999
五、什么是"为使用聚合函数的列设置别名"?
问题:没有别名会怎样?
sql
SELECT MAX(market_price), MIN(market_price) FROM goods;
查询结果:
| MAX(market_price) | MIN(market_price) |
|---|---|
| 5999 | 199 |
问题:列名是 MAX(market_price) 和 MIN(market_price),又长又不好看!
解决:使用别名
sql
SELECT MAX(market_price) AS "市场价最高", MIN(market_price) AS "市场价最低" FROM goods;
查询结果:
| 市场价最高 | 市场价最低 |
|---|---|
| 5999 | 199 |
别名的作用:给聚合函数的结果起一个更友好、更易懂的名字。
六、别名 vs 原列名
| 概念 | 含义 | 示例 |
|---|---|---|
| 原列名 | 表中原本的字段名 | market_price |
| 聚合函数结果 | 计算后的值 | MAX(market_price) |
| 别名 | 给结果起的临时名字 | AS "市场价最高" |
示意图
text
原表列名 聚合函数 别名 ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │market_price │ │ MAX() │ │ "市场价最高" │ │ (列名) │ ──► │ (函数) │ ──► │ (别名) │ └─────────────┘ └─────────────┘ └─────────────┘ ↓ 计算结果:5999
七、聚合函数 vs 普通列
| 对比项 | 普通列 | 聚合函数列 |
|---|---|---|
| 输入 | 单行的一个值 | 多行的所有值 |
| 输出 | 每行一个结果 | 整个表一个结果 |
| 需要别名吗? | 可选,但不必须 | 强烈推荐,否则列名是函数表达式 |
| 示例 | SELECT goods_name | SELECT MAX(price) |
八、完整示例对比
没有别名(不推荐)
sql
SELECT MAX(market_price), MIN(market_price) FROM goods;
结果:
text
MAX(market_price) | MIN(market_price) ------------------|------------------ 5999 | 199
列名难看,不直观。
有别名(推荐)
sql
SELECT MAX(market_price) AS "市场价最高", MIN(market_price) AS "市场价最低" FROM goods;
结果:
text
市场价最高 | 市场价最低 ----------|---------- 5999 | 199
列名清晰,一目了然。
九、总结
| 问题 | 答案 |
|---|---|
| 什么是聚合函数? | 对多行数据计算出一个结果的函数(如 MAX、MIN、SUM) |
| MAX() 做什么? | 找出一列中的最大值 |
| MIN() 做什么? | 找出一列中的最小值 |
| 为什么需要别名? | 让结果列的显示名称更清晰易懂 |
| "为使用聚合函数的列设置别名"什么意思? | 给 MAX(...) 这样的计算结果起一个好名字 |
一句话总结:聚合函数(如 MAX、MIN)把多行数据聚合成一个结果,用 AS 给这个结果起别名,让查询结果更清晰易读