数据处理、汇总、分组
# 创建计算字段
# 字段拼接
使用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