【MySql】聚合函数group byOJ题目

news2024/11/20 13:38:40

文章目录

  • 聚合函数
  • 分组group by使用
  • OJ题目
    • 描述
    • 描述

本篇主要介绍mysql的聚合函数和group by的使用,最后是OJ题目的练习。

聚合函数

MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数:

		函数									说明
COUNT([DISTINCT] expr) 				返回查询到的数据的数量
SUM([DISTINCT] expr) 				返回查询到的数据的总和,不是数字没有意义
AVG([DISTINCT] expr) 				返回查询到的数据的平均值,不是数字没有意义
MAX([DISTINCT] expr) 				返回查询到的数据的最大值,不是数字没有意义
MIN([DISTINCT] expr) 				返回查询到的数据的最小值,不是数字没有意义

对于上面所列举出来的聚合函数,下面我们通过一些案例来进行对聚合函数的运用,增强理解,话不多说

  • 统计班级共有多少同学
-- 使用 * 做统计,不受 NULL 影响
select count(*) from exam_result;

-- 使用表达式做统计
select count(1) from exam_result;

image-20230614190926674

image-20230614191010459

  • 统计班级的数学成绩有多少个
select count(math) from exam_result;

image-20230614191208856

但是我们看到了数学成绩是有重复的,如何去重?distinct

select distinct count(distinct math) from exam_result;

image-20230614191642323

  • 统计数学成绩总分
select sum(math) from exam_result;

image-20230614191755416

  • 统计数学成绩的平均分
select sum(math)/count(*) from exam_result;

select avg(math) from exam_result;

image-20230614192404128

  • 统计英语成绩不及格的人数
 select count(*) from exam_result where english<60;

image-20230614192613880

  • 返回英语最高分
select max(english) from exam_result;

image-20230614192902514

  • 返回 > 70 分以上的数学最低分
select min(math) from exam_result where math>70;

image-20230614193443797

分组group by使用

分组的目的是为了进行分组之后,方便进行聚合统计

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

select column1, column2, .. from table group by column;

先创建一个雇员信息表
EMP员工表
DEPT部门表
SALGRADE工资等级表
如何显示每个部门的平均工资和最高工资

image-20230615000430588

image-20230615000854934

  • 显示每个部门的平均工资和最高工资
select deptno,max(sal) 最高,avg(sal) 平均 from emp group by deptno;

image-20230615075542834

分组就是把一组按照条件拆分成多个组,进行各自组内的统计分组;就是把一张表按照条件在逻辑上拆成了多个子表,然后分别对各自的子表进行聚合统计。

  • 显示每个部门的每种岗位的平均工资和最低工资
select deptno,job, avg(sal) 平均,min(sal) 最低 from emp group by deptno,job;

image-20230615084036318

  • 显示平均工资低于2000的部门和它的平均工资

统计各个部门的平均工资

select avg(sal) from EMP group by deptno

having和group by配合使用,对group by结果进行过滤

select avg(sal) as myavg from EMP group by deptno having myavg<2000;

having就是对聚合后的统计数据,条件筛选

  • having和where区别理解,执行顺序

image-20230615093211253

条件筛选的阶段是不同的。不要单纯的认为只有在磁盘上表结构导入到mysql,真实存在的表才叫做表,中间筛选出来的包括最终结果全部都是逻辑上的表,可以理解为mysql一切皆为表。未来只要我们能够处理好单标的CURD,所有的sql场景我们全部都能用统一的方式进行。

学习完上面的知识之后,我们下面进行一些OJ题目练习,题目来源牛客网与leetcode,做一做,提高自己编写sql的能力

OJ题目

SQL228 批量插入数据

描述

题目已经先执行了如下语句:

drop table if exists actor;
CREATE TABLE actor (
actor_id  smallint(5)  NOT NULL PRIMARY KEY,
first_name  varchar(45) NOT NULL,
last_name  varchar(45) NOT NULL,
last_update  DATETIME NOT NULL)

请你对于表actor批量插入如下数据(不能有2条insert语句哦!)

actor_idfirst_namelast_namelast_update
1PENELOPEGUINESS2006-02-15 12:34:33
2NICKWAHLBERG2006-02-15 12:34:33

sql语句如下:

insert into actor (actor_id,first_name,last_name,last_update) values (1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33');

SQL202 找出所有员工当前薪水salary情况

描述

有一个薪水表,salaries简况如下:

emp_nosalaryfrom_dateto_date
10001725272002-06-229999-01-01
10002725272001-08-029999-01-01
10003433112001-12-019999-01-01

请你找出所有员工具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示,以上例子输出如下:

salary
72527
43311

sql语句如下:

select  distinct salary from salaries order by salary desc;

SQL195 查找最晚入职员工的所有信息

描述

有一个员工employees表简况如下:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100021964-06-02BezalelSimmelF1985-11-21
100031959-12-03PartoBamfordM1986-08-28
100041954-05-01ChristianKoblickM1986-12-01

请你查找employees里最晚入职员工的所有信息,以上例子输出如下:

emp_nobirth_datefirst_namelast_namegenderhire_date
100041954-05-01ChristianKoblickM1986-12-01
select * from employees order by hire_date desc limit 1;

SQL196 查找入职员工时间排名倒数第三的员工所有信息

描述

有一个员工employees表简况如下:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100021964-06-02BezalelSimmelF1985-11-21
100031959-12-03PartoBamfordM1986-08-28
100041954-05-01ChristianKoblickM1986-12-01

请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

select * from employees 
where hire_date=(select distinct hire_date from employees order by hire_date desc limit 2,1);

SQL201 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t

select emp_no,count(*) as t from salaries group by emp_no having t>15;

从titles表获取按照title进行分组

select title,count(title) as t from titles
group by title having t>=2;

182. 查找重复的电子邮箱

select email from Person group by email having count(email)>1;

595. 大的国家

select name,population,area from world
where area >= 3000000 or population >= 25000000;

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

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

相关文章

python开发构建深度学习分类模型,探索AI在地震事件分类中的应用于可解释性分析

最近看到了一篇蛮有意思的论文&#xff0c;如下&#xff1a; 将深度学习开发应用到了地震事件分析分类领域中去了&#xff0c;感觉挺有意思&#xff0c;就想着也来自己体验下看看&#xff0c;这里的数据集是网上找到的一个地震波应该是仿真实验的数据集&#xff0c;我们先来看下…

Pytest教程__Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1)

考虑场景&#xff1a; 我们的自动化用例需要支持在不同测试环境运行&#xff0c;有时候在dev环境运行&#xff0c;有时候在test环境运行&#xff1b;有时候需要根据某个参数不同的参数值&#xff0c;执行不同的业务逻辑&#xff1b; 上面的场景我们都可以通过“在命令行中输入…

浏览器之BFC

浏览器之BFC 什么是BFCBFC的特性特性1&#xff1a;BFC会阻止垂直外边距折叠①相邻兄弟元素margin重叠问题②父子元素margin重叠问题 特性2&#xff1a;BFC不会重叠浮动元素BFC可以包含浮动----清除浮动 什么是BFC Block formatting context直译为"块级格式化上下文Block …

Python进阶语法之字符串

Python进阶语法之字符串 当我们处理文本数据时&#xff0c;字符串是不可避免的数据类型。Python 提供了很多字符串方法&#xff0c;它们可以帮助我们更方便地操作和处理字符串。在本篇博客中&#xff0c;我们将深入探讨 Python 字符串。 字符串的基本操作 在深入了解字符串…

亚马逊云科技 | Summit - 中国峰会

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 亚马逊云科技 | Summit - 中国峰会 亚马逊云科技提供全球覆盖广泛、服务深入的云平台&#xff0c;全球数据中心提供超过 200 项功能齐全的服务连续 11 年被 Gartner 评…

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”&#xff08;来自chatGPT3.5&#xff09; 4.本文将给出两种数据对齐的例子 1&#xff09;dataframe类型数据和dataframe类型数据对齐&#xff08;对齐NAME列&#xff09;&#xff1b; 数据对…

[游戏开发]Unity颜色矫正无障碍方案

[目录] 0. 前言1. 颜色矫正2. 线性变换Shader2. 颜色纠正参数3. 摄像机后处理4. 效果5. 结束咯 0. 前言 之前有在关注色盲视觉纠正问题&#xff0c;最近在调整游戏的时候就打算把这个用上。 色弱色盲&#xff0c;这其实算是一种误称吧&#xff0c;只是人类中的少数派&#xf…

保护您的数据与ManageEngine Log360

在当今数字时代&#xff0c;网络安全成为了企业和组织不可忽视的重要议题。随着信息技术的发展和互联网的普及&#xff0c;企业面临着越来越多的网络威胁和数据泄露的风险。为了保护重要的数据资产和防止潜在的攻击&#xff0c;日志管理和事件关联成为了至关重要的一环。 Mana…

IIS安装ARR(Application Request Router)负载均衡扩展

IIS7.5安装ARR(Application Request Router)负载均衡扩展 本文主要记录我在IIS中安装ARR的全流程&#xff0c;本文参考了网上一些教程&#xff0c;但可能时间关系&#xff0c;与一些早期文章所述有所出入。 花了我半天的时间才最终安装成功&#xff0c;因此这里做一个记录。本…

立体解析Fiddler Filters:让你快速捕获和过滤网络请求

如果要对当前Fiddler的抓包进行过滤&#xff08;如过滤掉与测试项目无关的抓包请求&#xff09;&#xff0c;那功能强大的 Filters 过滤器能帮到你。 如果你想学习Fiddler抓包工具&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的Fiddler抓包…

动态规划算法(多状态dp1)

动态规划算法专辑之多状态dp问题&#xff08;1&#xff09; 一、什么是多状态 多状态dp问题&#xff0c;指一个规模问题下存在多种状态&#xff0c;我们需要联合关注多种状态间的相互转移&#xff0c;才可以求解目的问题。 多状态问题可以理解为有限状态机&#xff0c;在有限…

节省时间、提升效率——Jetpack关爱你的摸鱼时间

JetPack Jetpack 是一个由 Google 提供的 Android 应用开发库集合。它旨在简化 Android 应用程序开发过程&#xff0c;提供一系列的库和工具&#xff0c;帮助开发者快速构建高质量、健壮、可扩展的 Android 应用。 Jetpack 包含多个组件&#xff0c;每个组件都专注于不同的功…

Nginx 的reload,升级以及关闭流程

一、reload流程 1 向master进程发送HUP信号&#xff08;reload命令&#xff09; 2 master进程校验配置语法是否正确&#xff1b; 3 master打开可能引入的新的监听端口&#xff1b; 4 master用新的配置文件启动新的worker子进程&#xff1b; 5 启动新的worker子进程之后&#x…

小马赠书【第8期】清华社 618 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍&#xff0c;包含 前端、后端、数据分析、人工智能、python 等各个领域。关于如何参与等具体活动信息请看活动详情页&#xff0c;以下是 15 本 IT 书籍介绍&#xff1a; 活动详情页&#xff1a;小马赠书【第8期】 1. 《Linux设备驱动…

怎么入手性能测试,重点以及各项流程

之前在性能测试学习路线里&#xff0c;提到过《软件性能测试、分析与调优实践之路》这本书。 昨天看到之前自己记的读书笔记&#xff0c;整理一下发出来&#xff0c;希望对读者有所帮助。 网上关于性能测试的文章大多数时间比较久远&#xff0c;或者知识点比较散&#xff0c;…

南大一作!科学家发现全新量子态 | Nature速递

光子盒研究院 马萨诸塞大学助理教授Tigran Sedrakyan在内的一个物理学家团队最近在《自然》杂志上宣布&#xff0c;他们已经发现了一种新的物质阶段——“手性玻色液态(chiral Bose-liquid state)”&#xff0c;这一突破为理解物理世界本质的古老努力开辟了一条全新道路。 团队…

【目标跟踪】MOT数据集GroundTruth可视化

MOT数据集格式简介 MOT15数据集下载&#xff1a;https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例&#xff1a; 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…

autocut

在讲 OpenAI Whisper 前先做了一个剪视频小工具【论文精读44】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 58633、弹幕量 233、点赞数 2732、投硬币枚数 1630、收藏人数 1465、转发人数 604, 视频作者 跟李沐学AI, 作者简介 &am…

什么是python,一篇带你详细了解Python

Python是一种跨平台的计算机程序设计语言&#xff0c;是ABC语言的替代品&#xff0c;属于面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 python前景…

挖掘用户真实需求 避坑5大技巧

1、用户总是“说一套 做一套” 在进行需求市场调研时&#xff0c;我们问1000个用户&#xff0c;是否想要黄金&#xff0c;几乎所有的用户都是肯定的回答。如果我们以此认定&#xff0c;黄金是用户的真实需求会过于草率。 我们需继续追问用户&#xff1a;买黄金做什么&#xff1…