【MySQL】基本查询(三)聚合函数+group by

文章目录

  • 一. 聚合函数
  • 二. group by子句
  • 结束语

建立如下表

//创建表结构
mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment '同学姓名',-> chinese float default 0.0 comment '语文成绩',-> math float default 0.0 comment '数学成绩',-> english float default 0.0 comment '英语成绩'-> );//插入测试数据
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);

一. 聚合函数

函数说明
count()返回查询到的数据的数量
sum()返回查询到的数据的总和
avg()返回查询到的数据的平均值
max()返回查询到的数据的最大值
min()返回查询到的数据的最小值

统计本次考试的数学成绩分数个数

mysql> select count(math) from exam_result;
+-------------+
| count(math) |
+-------------+
|           7 |
+-------------+//去重后的数学成绩数量
mysql> select count(distinct math) from exam_result;
+----------------------+
| count(distinct math) |
+----------------------+
|                    6 |
+----------------------+

统计数学成绩总分

mysql> select sum(math) 数学总成绩 from exam_result;
+-----------------+
| 数学总成绩      |
+-----------------+
|             649 |
+-----------------+//统计数学成绩<90的同学们的数学成绩总分
mysql> select sum(math) from exam_result where math<90;
+-----------+
| sum(math) |
+-----------+
|       153 |
+-----------+

统计平均分

//sum和count的结合
mysql> select sum(math+english+chinese)/count(math)
from examm_result;
+---------------------------------------+
| sum(math+english+chinese)/count(math) |
+---------------------------------------+
|                    229.14285714285714 |
+---------------------------------------+
//avg的使用
mysql> select avg(english+chinese+math) from exam_result;
+---------------------------+
| avg(english+chinese+math) |
+---------------------------+
|        229.14285714285714 |
+---------------------------+

返回英语最高分

mysql> select max(english) from exam_result;
+--------------+
| max(english) |
+--------------+
|           90 |
+--------------+

返回数学>70的最低分

mysql> select min(math) from exam_result where math>70;
+-----------+
| min(math) |
+-----------+
|        73 |
+-----------+

二. group by子句

在select中使用group by 子句可以对指定列进行分组查询

select 属性1,属性2 ... from table_name group by 属性

实验:使用oracle 9i的经典测试表

CREATE TABLE `dept` (`deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',`dname` varchar(14) DEFAULT NULL COMMENT '部门名称',`loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);CREATE TABLE `emp` (`empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',`ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',`job` varchar(9) DEFAULT NULL COMMENT '雇员职位',`mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编>号',`hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',`sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',`comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',`deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号
'
);CREATE TABLE `salgrade` (`grade` int(11) DEFAULT NULL COMMENT '等级',`losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',`hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);mysql> desc dept;
+--------+--------------------------+------+-----+---------+-------+
| Field  | Type                     | Null | Key | Default | Extra |
+--------+--------------------------+------+-----+---------+-------+
| deptno | int(2) unsigned zerofill | NO   |     | NULL    |       |
| dname  | varchar(14)              | YES  |     | NULL    |       |
| loc    | varchar(13)              | YES  |     | NULL    |       |
+--------+--------------------------+------+-----+---------+-------+mysql> desc emp;
+----------+--------------------------+------+-----+---------+-------+
| Field    | Type                     | Null | Key | Default | Extra |
+----------+--------------------------+------+-----+---------+-------+
| empno    | int(6) unsigned zerofill | NO   |     | NULL    |       |
| ename    | varchar(10)              | YES  |     | NULL    |       |
| job      | varchar(9)               | YES  |     | NULL    |       |
| mgr      | int(4) unsigned zerofill | YES  |     | NULL    |       |
| hiredate | datetime                 | YES  |     | NULL    |       |
| sal      | decimal(7,2)             | YES  |     | NULL    |       |
| comm     | decimal(7,2)             | YES  |     | NULL    |       |
| deptno   | int(2) unsigned zerofill | YES  |     | NULL    |       |
+----------+--------------------------+------+-----+---------+-------+mysql> desc salgrade;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| grade | int(11) | YES  |     | NULL    |       |
| losal | int(11) | YES  |     | NULL    |       |
| hisal | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

emp员工表
dept部门表
salgrade工资等级表

如何显示每个部门的平均工资和最高工资

mysql> select deptno,avg(sal) 平均工资,max(sal) 最大工资 fromm emp group by deptno;
+--------+--------------+--------------+
| deptno | 平均工资     | 最大工资     |
+--------+--------------+--------------+
|     10 |  2916.666667 |      5000.00 |
|     20 |  2175.000000 |      3000.00 |
|     30 |  1566.666667 |      2850.00 |
+--------+--------------+--------------+

显示每个部门的每种岗位的平均工资和最低工资

mysql> select avg(sal) 平均工资,min(sal) 最小工资,job,deptno  from emp group by deptno,job;
+--------------+--------------+-----------+--------+
| 平均工资     | 最小工资     | job       | deptno |
+--------------+--------------+-----------+--------+
|  1300.000000 |      1300.00 | CLERK     |     10 |
|  2450.000000 |      2450.00 | MANAGER   |     10 |
|  5000.000000 |      5000.00 | PRESIDENT |     10 |
|  3000.000000 |      3000.00 | ANALYST   |     20 |
|   950.000000 |       800.00 | CLERK     |     20 |
|  2975.000000 |      2975.00 | MANAGER   |     20 |
|   950.000000 |       950.00 | CLERK     |     30 |
|  2850.000000 |      2850.00 | MANAGER   |     30 |
|  1400.000000 |      1250.00 | SALESMAN  |     30 |
+--------------+--------------+-----------+--------+

显示平均工资低于2000的部门和其平均工资
having和group by配合使用,筛选group by的结果
having和where的效果相同,但是因为where的执行顺序比group by先,所以无法筛选结果,having在group by 后,可以配合group by进一步筛选结果

mysql> select deptno,avg(sal) 平均工资 from emp group by depttno having 平均工资<2000;
+--------+--------------+
| deptno | 平均工资     |
+--------+--------------+
|     30 |  1566.666667 |
+--------+--------------+

SQL查询中各个关键字的执行先后顺序:
from>on>join>where>group by>with>having>select>distinct>order by>limit

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于地理位置的IP地址定位技术

IP地址定位是指通过互联网上的IP地址&#xff0c;准确地定位出该IP地址对应的物理位置。IP地址是互联网上设备之间通信时使用的一个地址标识符&#xff0c;每个设备都有一个唯一的IP地址。 IP地址定位的原理是通过收集和分析网络设备的IP地址和相应的网络数据&#xff0c;以确定…

华为云云耀云服务器L实例评测|测试CentOS的网络配置和访问控制

目录 引言 1 理解几个基础概念 2 配置VPC、子网以及路由表 3 配置安全组策略和访问控制规则 3.1 安全组策略和访问控制简介 3.2 配置安全组策略 3.3 安全组的最佳实践 结论 引言 在云计算时代&#xff0c;网络配置和访问控制是确保您的CentOS虚拟机在云环境中安全运行的…

淘宝商品链接获取淘宝商品详情数据(用 Python实现淘宝商品信息抓取)

在网页抓取方面&#xff0c;可以使用 Python、Java 等编程语言编写程序&#xff0c;通过模拟 HTTP 请求&#xff0c;获取淘宝多网站上的商品页面。在数据提取方面&#xff0c;可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#xff0c;淘宝网…

Python中如何快速解析JSON对象数组

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 由于浏览器可以迅速地解析JSON对象&#xff0c;它们有助于在客户端和服务器之间传输数据。 本文将描述如何使用Python的JSON模块来传输和接收JSON数据。 JavaSc…

【JavaEE】多线程(五)- 基础知识完结篇

多线程&#xff08;五&#xff09; 文章目录 多线程&#xff08;五&#xff09;volatile关键字保证内存可见性JMM&#xff08;Java Memory Model&#xff09; 不保证原子性 wait 和 notifywait()notify()线程饿死 上文我们主要讲了 synchronized以及线程安全的一些话题 可重入…

故障注入常用方法有哪些 其重要性是什么

故障注入是一种有效的测试方法&#xff0c;可用于评估系统对异常情况的响应。通过这种测试方法&#xff0c;可以发现系统中的潜在问题&#xff0c;并采取适当措施来改进系统的质量和性能。本文将介绍故障注入常用方法及重要性! 一、故障注入常用方法 1、随机故障注入&#xff1…

《向量数据库指南》——向量数据库 有必要走向专业化吗?

向量数据库 有必要走向专业化吗? 向量数据库系统的诞生,来源于具体业务需求——想要高效处理海量的向量数据,就需要更细分、更专业的数据基础设施,为向量构建专门的数据库处理系统。 但这种路径是必须的吗? 从产品层面讲,如果传统数据库厂商不单独研发向量数据库,那么…

Postgresql中的C/C++混编(JIT)

1 Postgresql编译JIT 整体上看使用了GCC、G编译文件&#xff0c;最后用G汇总&#xff1a; GCC编译的三个.o文件llvmjit、llvmjit_deform、llvmjit_expr llvmjit.c -> llvmjit.o gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -…

Unity布料系统Cloth

Unity布料系统Cloth 介绍布料系统Cloth(Unity组件)组件上的一些属性布料系统的使用布料约束Select面板Paint面板Gradient Tool面板 布料碰撞布料碰撞碰撞适用 介绍 布料系统我第一次用是做人物的裙摆自然飘动&#xff0c;当时我用的是UnityChan这个unity官方自带的插件做的裙摆…

javaee ssm框架项目整合thymeleaf2.0 更多thymeleaf标签用法 项目结构图

创建ssmthymeleaf项目 创建ssmthymeleaf项目参考此文 thymeleaf更多常用标签 <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>Title</title> …

【ccf-csp题解】第7次csp认证-第二题-俄罗斯方块-简单碰撞检测算法

题目描述 思路讲解 本题的主要思路是实现一个draw函数&#xff0c;这个函数可以绘制每一个状态的画布。然后从第一个状态往后遍历&#xff0c;当绘制到某一个状态发生碰撞时&#xff0c;答案就是上一个状态的画布。 此处的状态x实际就是在原来的15*10画布上的第x行开始画我们…

你必须知道的数据查询途径!!

在当今信息爆炸的时代&#xff0c;我们每天都会面临海量的数据和信息。如何在这些繁杂的信息中快速、准确地找到自己需要的内容&#xff0c;也是当代一个非常重要的技能。下面&#xff0c;我将介绍几种你必须知道的企业数据信息查找途径。 ​ 1. 搜索引擎 搜索引擎是我们日常中…

基于SSM的医用物理学实验考核系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

算法题:柠檬水找零(典型的贪心算法问题)

这道题就是纯贪心算法题&#xff0c;遍历每个顾客&#xff0c;先把钱收了&#xff0c;如果是10块钱就判断手里头有没有5元用于找零&#xff1b;如果是20块钱&#xff0c;先判断是不是有10元5元&#xff0c;如果没有就再判断是否有3个5元。没有的话就直接返回 False。(完整题目附…

vue2项目中使用element ui组件库的table,制作表格,改表格的背景颜色为透明的

el-table背景颜色变成透明_el-table背景透明_讲礼貌的博客-CSDN博客 之前是白色的&#xff0c;现在变透明了&#xff0c;背景颜色是蓝色

加密市场波动:地缘政治与美股走弱引发不确定性!

伴随着国庆假期的结束&#xff0c;多日波动率维持低位的加密市场也似乎开始苏醒。近期多次突破28000美元未果的比特币&#xff0c;于9日15:00开始从27800美元附近下跌&#xff0c;最低跌至27260美元&#xff0c;同期以太坊也至1550美元左右&#xff0c;创近半个月来新低。 Coin…

vue接入高德地图获取经纬度

&#x1f90d;step1:高德地图开放平台&#xff0c;根据指引注册成为高德开放平台开发者&#xff0c;并申请 web 平台&#xff08;JS API&#xff09;的 key 和安全密钥; &#x1f90d;step2:在html引入安全密钥&#xff08;获取经纬度用&#xff0c;不然会报错&#xff09; <…

基于SpringBoot的大型商场应急预案管理系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 预案信息管理 预案类型统计 事件类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍…

手撕各种排序

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握每种排序的方法&#xff0c;理解每种排序利弊…

springboot-配置文件优先级

官方文档 https://docs.spring.io/spring-boot/docs/2.7.16/reference/htmlsingle/#features.external-config Spring Boot允许外部化配置&#xff0c;这样就可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源&#xff0c;包括Java属性文件、YAML文件、环境…