当前位置: 首页 > news >正文

Mysql系列--5、表的基本查询(下)

目录

一、去重数据

二、聚合统计

三、分组聚合统计


一、去重数据

我们可以用select distinct 去重数据将查询到的表插入到新表中再重命名为原来的表名达到去重数据的目的insert into 新表 select distinct * from 原表
-- 创建原数据表
CREATE TABLE duplicate_table (id int, name varchar(20));-- 插入测试数据
INSERT INTO duplicate_table VALUES
(100, 'aaa'),
(100, 'aaa'),
(200, 'bbb'),
(200, 'bbb'),
(200, 'bbb'),
(300, 'ccc');------------------------------------------------------------------------
-- 创建一张空表 no_duplicate_table,结构和 duplicate_table 一样
CREATE TABLE no_duplicate_table LIKE duplicate_table-- 将 duplicate_table 的去重数据插入到 no_duplicate_table
INSERT INTO no_duplicate_table SELECT DISTINCT * FROM duplicate_table;-- 通过重命名表,实现原子的去重操作
RENAME TABLE duplicate_table TO old_duplicate_table,
no_duplicate_table TO duplicate_table;-- 查看最终结果
SELECT * FROM duplicate_table;

二、聚合统计

select 聚合函数(属性,表达式) from 表名
统计班级共有多少同学
-- 使用 * 做统计,不受 NULL 影响SELECT COUNT(*) FROM students;
+----------+
| COUNT(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)-- 使用表达式做统计
SELECT COUNT(1) FROM students;
+----------+
| COUNT(1) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)统计班级收集的 qq 号有多少
-- NULL 不会计入结果SELECT COUNT(qq) FROM students;
+-----------+
| COUNT(qq) |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)统计本次考试的数学成绩分数个数
-- COUNT(math) 统计的是全部成绩SELECT COUNT(math) FROM exam_result;
+---------------+
| COUNT(math) |
+---------------+
| 6 |
+---------------+
1 row in set (0.00 sec)统计的是去重成绩数量
SELECT COUNT(DISTINCT math) FROM exam_result;
+------------------------+
| COUNT(DISTINCT math) |
+------------------------+
| 5 |
+------------------------+
1 row in set (0.00 sec)统计数学成绩总分
SELECT SUM(math) FROM exam_result;
+-------------+
| SUM(math) |
+-------------+
| 569 |
+-------------+
1 row in set (0.00 sec)-- 不及格 < 60 的总分,没有结果,返回 NULL
SELECT SUM(math) FROM exam_result WHERE math < 60;
| SUM(math) |
+-------------+
| NULL |
+-------------+
1 row in set (0.00 sec)统计平均总分
SELECT AVG(chinese + math + english) 平均总分 FROM exam_result;
+--------------+
| 平均总分 |
+--------------+
| 297.5 |
+--------------+返回 > 70 分以上的数学最低分
SELECT MIN(math) FROM exam_result WHERE math > 70;
+-------------+
| MIN(math) |
+-------------+
| 73 |
+-------------+
1 row in set (0.00 sec)

三、分组聚合统计

在select中使用group by 子句可以对指定列进行分组查询
select column1, column2, .. from table group by column;a.将外部数据导入mysqlsource + 来源路径b.按某列分组后查询信息select max(x) as 最高,avg(y) 平均 from 表名 group by 某列或某些列的属性c.having...对聚合后的数据进行筛选d.where 对任意列进行条件筛选(执行顺序在前)having 对分组聚合后的结果进行条件筛选 (执行顺序在后)

http://www.dtcms.com/a/324545.html

相关文章:

  • Speaking T2 - Dining Hall to CloseDuring Spring Break
  • 机器学习 DBScan
  • 一键复制产品信息到剪贴板
  • 【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用
  • 网闸技术解析:如何实现对国产数据库(达梦/金仓)的深度支持
  • AI 代理框架:使用正确的工具构建更智能的系统
  • 网络小工具发布 IPPw
  • 机器学习之K-means(K-均值)算法
  • 七、CV_模型微调
  • SpringBoot学习日记(三)
  • P1152 欢乐的跳
  • 从零开始实现Qwen3(MOE架构)
  • C语言基础05——指针
  • Pinia 状态管理库
  • Redis - 使用 Redis HyperLogLog 进行高效基数统计
  • 无人机集群协同三维路径规划,采用梦境优化算法(DOA)实现,Matlab代码
  • strace的常用案例
  • 基于Qt/QML 5.14和YOLOv8的工业异常检测Demo:冲压点智能识别
  • VSCODE+GDB+QEMU调试内核
  • 为 Prometheus 告警规则增加 UI 管理能力
  • 力扣经典算法篇-47-Pow(x, n)(快速幂思路)
  • 每日算法刷题Day60:8.10:leetcode 队列5道题,用时2h
  • Java Stream流详解:从基础语法到实战应用
  • 安装1panel之后如何通过nginx代理访问
  • Linux系统编程Day11 -- 进程属性和常见进程
  • 智慧社区(十一)——Spring Boot 实现 Excel 导出、上传与数据导入全流程详解
  • Langchain调用MCP服务和工具
  • MySQL的逻辑架构和SQL执行的流程:
  • 正确使用SQL Server中的Hint(10)—Hint简介与Hint分类及语法(1)
  • Spring Boot + SSH 客户端:在浏览器中执行远程命令