当前位置: 首页 > 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.lryc.cn/news/616005.html

相关文章:

  • Agent在游戏行业的应用:NPC智能化与游戏体验提升
  • 【数据结构入门】栈和队列的OJ题
  • Shell脚本-其他变量定义
  • vue和react和uniapp的状态管理分别是什么,并且介绍和怎么使用
  • How Websites Work 网站如何运作
  • Vue 事件冒泡处理指南:从入门到精通
  • 五种Excel表格导出方案
  • sqllabs——Less1
  • 前端学习日记 - 前端函数防抖详解
  • 遇到前端导出 Excel 文件出现乱码或文件损坏的问题
  • 打靶日常-upload-labs(21关)
  • Spring Boot配置文件加密详解
  • crc32算法php版----crc32.php
  • 【redis初阶】--------Set 集合类型
  • 如何通过API接口实现批量获取淘宝商品数据?(官方与非官方渠道分享)
  • Linux 路由子系统深度分析:框架、实现与代码路径
  • [Python 基础课程]常用函数
  • X265性能分析开源代码
  • 【高等数学】第八章 向量代数与空间解析几何——第六节 空间曲线及其方程
  • Video Lecture 8 Page Fault
  • 使用 Python 进行图片识别的项目开发
  • git merge和git rebase的区别
  • MIRO中文本如何传入FI凭证的
  • 基于Spring SSE构建实时监控系统
  • SpringCloud详细笔记
  • es-drager-blog
  • Java 日常开发笔记(小程序页面交互传参-id)
  • 震动马达实现库函数版(STC8)
  • 升级 JDK 17 碰到的请求 https 问题
  • 如何在Python中使用flask框架搭建web服务?