程序员书籍笔记 程序员书籍笔记
  • JavaScript
  • HTML/CSS
  • PHP
  • Python
  • Go
  • 数据库
  • 容器
  • 微服务
  • 消息队列
  • 搜索引擎
  • 大数据
  • 鸟哥Linux私房菜
其他
  • 大数据
  • 深度学习
APP下载 (opens new window)
GitHub (opens new window)
  • JavaScript
  • HTML/CSS
  • PHP
  • Python
  • Go
  • 数据库
  • 容器
  • 微服务
  • 消息队列
  • 搜索引擎
  • 大数据
  • 鸟哥Linux私房菜
其他
  • 大数据
  • 深度学习
APP下载 (opens new window)
GitHub (opens new window)
  • 数据库

    • MySQL必知必会

      • 数据检索、排序、过滤
      • 数据处理、汇总、分组
        • 创建计算字段
          • 字段拼接
          • 使用别名
          • 执行算数计算
        • 使用数据处理函数
          • 文本处理函数
          • 日期和时间处理函数
          • 数值处理函数
        • 汇总数据
          • 聚集函数
          • 聚集不同的值
        • 分组数据
          • 创建分组
          • 过滤分组
          • 分组和排序
          • SELECT语句的顺序
      • 子查询、连表、组合
      • 全文本搜索、插入
      • 更新、删除、表操作
      • 视图、存储过程、游标
      • 触发器、事务
      • 全球化、安全、维护
    • MongoDB权威指南

  • 容器

  • 微服务

  • 消息队列

  • 搜索引擎

  • 大数据

  • 框架和软件
  • 数据库
  • MySQL必知必会
小游
2021-05-07

数据处理、汇总、分组

# 创建计算字段

# 字段拼接

使用CONCAT来平均字符串,或者拼接结果

SELECT CONCAT('ID:',id,'|内容:',content) FROM `comment`
1

比如我们拼接返回值

image-20210508203055762

# 使用别名

就是AS关键词

SELECT CONCAT('ID:',id,'|内容:',content) AS content FROM `comment`
1

image-20210508203159410

# 执行算数计算

SELECT  shareID,commentType,shareID*commentType AS num FROM `comment`
1

我们可以直接对查询的结果进行简单计算(可以进行+、-、* 、/ 操作)

image-20210508203340681

# 使用数据处理函数

# 文本处理函数

我这里没有合适的数据,就不测试了,直接贴函数

image-20210508203516290

image-20210508203543411

# 日期和时间处理函数

这里我简单测试一个函数

SELECT date,DAY(date) FROM `comment`
1

image-20210508203709195

这个函数也可以放后面

SELECT date FROM `comment` WHERE DAY(date) = 9
1

image-20210508203827435

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

image-20210508203730112

# 数值处理函数

这里简单了解一下即可

image-20210508203853575

# 汇总数据

# 聚集函数

image-20210508203942299

比如我们确定有多少行数据可以使用这样的操作

SELECT COUNT(ID) FROM `comment`
1

比如我们这里有23行数据

image-20210508204048878

其他的就不测了

# 聚集不同的值

比如我们可以求不重复的情况下所有数据的平均和

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

image-20210508204517864

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

image-20210508204811520

注意:这里使用where会报错,(一般WHERE用于过滤行,HAVING用于过滤分组)

当然我们可以这两个一起使用

SELECT COUNT(*),shareID FROM `comment` WHERE shareID > 1 GROUP BY shareID HAVING COUNT(*) > 5
1

image-20210508204950619

# 分组和排序

我们可以对分组的数据进行排序操作

SELECT COUNT(*),shareID FROM `comment` GROUP BY shareID HAVING COUNT(*) > 5 ORDER BY shareID
1

image-20210508205121372

# SELECT语句的顺序

我们在使用的使用必须按照下面这个顺序来进行操作

字句 说明 是否必须
SELECT 要返回的列或表达式 是
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤 否
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤 否
ORDER BY 输出排序顺序 否
LIMIT 要检索的行数 否
编辑 (opens new window)
上次更新: 2021/05/11, 19:39:39
数据检索、排序、过滤
子查询、连表、组合

← 数据检索、排序、过滤 子查询、连表、组合→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式