数据处理、汇总、分组
# 创建计算字段
# 字段拼接
使用CONCAT来平均字符串,或者拼接结果
SELECT CONCAT('ID:',id,'|内容:',content) FROM `comment`
1
比如我们拼接返回值

# 使用别名
就是AS关键词
SELECT CONCAT('ID:',id,'|内容:',content) AS content FROM `comment`
1

# 执行算数计算
SELECT shareID,commentType,shareID*commentType AS num FROM `comment`
1
我们可以直接对查询的结果进行简单计算(可以进行+、-、* 、/ 操作)

# 使用数据处理函数
# 文本处理函数
我这里没有合适的数据,就不测试了,直接贴函数


# 日期和时间处理函数
这里我简单测试一个函数
SELECT date,DAY(date) FROM `comment`
1

这个函数也可以放后面
SELECT date FROM `comment` WHERE DAY(date) = 9
1

常用的日期处理函数有这些

# 数值处理函数
这里简单了解一下即可

# 汇总数据
# 聚集函数

比如我们确定有多少行数据可以使用这样的操作
SELECT COUNT(ID) FROM `comment`
1
比如我们这里有23行数据

其他的就不测了
# 聚集不同的值
比如我们可以求不重复的情况下所有数据的平均和
SELECT AVG(DISTINCT shareID) FROM `comment`
1
当然,也可以多个组合
SELECT COUNT(*),AVG(DISTINCT shareID) FROM `comment`
1
# 分组数据
# 创建分组
比如我们确定不同shareID出现的次数
SELECT COUNT(*),shareID FROM `comment` GROUP BY shareID
1

GROUP BY注意事项
- GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套, 为数据分组提供更细致的控制。
- 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上 进行汇总。换句话说,在建立分组时,指定的所有列都一起计算 (所以不能从个别的列取回数据)。
- GROUP BY子句中列出的每个列都必须是检索列或有效的表达式 (但不能是聚集函数)。如果在SELECT中使用表达式,则必须在 GROUP BY子句中指定相同的表达式。不能使用别名。
- 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子 句中给出。
- 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列 中有多行NULL值,它们将分为一组。
- GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前
# 过滤分组
我们可以排除某些分组
SELECT COUNT(*),shareID FROM `comment` GROUP BY shareID HAVING COUNT(*) > 5
1

注意:这里使用where会报错,(一般WHERE用于过滤行,HAVING用于过滤分组)
当然我们可以这两个一起使用
SELECT COUNT(*),shareID FROM `comment` WHERE shareID > 1 GROUP BY shareID HAVING COUNT(*) > 5
1

# 分组和排序
我们可以对分组的数据进行排序操作
SELECT COUNT(*),shareID FROM `comment` GROUP BY shareID HAVING COUNT(*) > 5 ORDER BY shareID
1

# SELECT语句的顺序
我们在使用的使用必须按照下面这个顺序来进行操作
| 字句 | 说明 | 是否必须 |
|---|---|---|
| SELECT | 要返回的列或表达式 | 是 |
| FROM | 从中检索数据的表 | 仅在从表选择数据时使用 |
| WHERE | 行级过滤 | 否 |
| GROUP BY | 分组说明 | 仅在按组计算聚集时使用 |
| HAVING | 组级过滤 | 否 |
| ORDER BY | 输出排序顺序 | 否 |
| LIMIT | 要检索的行数 | 否 |
编辑 (opens new window)
上次更新: 2021/05/11, 19:39:39