GROUP BY 与 聚合函数、 HAVING 与 ORDER BY-MySQL数据库 - 分组选择数据(头歌实践教学平台)

news2024/11/27 14:40:52

文章目的初衷是希望学习笔记分享给更多的伙伴,并无盈利目的,尊重版权,如有侵犯,请官方工作人员联系博主谢谢。

目录

第1关:GROUP BY 与 聚合函数

任务描述

相关知识

GROUP BY与聚合函数的使用

编程要求

 

第2关:使用 HAVING 与 ORDER BY

任务描述

相关知识

使用having子句进行分组筛选

编程要求


第1关:GROUP BY 与 聚合函数

任务描述

本关任务:使用GROUP BY关键字结合聚合函数将数据进行分组。

相关知识

在之前的实训中我们简单的提到过GROUP BY关键字,本实训让我们进一步了解GROUP BY与聚合函数的使用。

为了完成本关任务,你需要掌握: 1.GROUP BY与聚合函数的结合使用; 2.GROUP BYSELECT指定的字段限制。

GROUP BY与聚合函数的使用

基本格式:

 
  1. select [聚合函数] 字段名 from 表名 [where 查询条件] [group by 字段名]

先提供表Info结构如下:

categorycountdigest
a5a2002
a2a2001
a11a2001
b10b2003
b6b2002
b3b2001
c9c2005
c9c2004
c8c2003
c7c2002
c4c2001

示例:将表中数据分类并汇总

GROUP BYSELECT指定的字段限制

示例:

 
  1. select category,sum(count),disgest from info group by category;

执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中

编程要求

在右侧编辑器补充代码,对年级Id和性别进行分组,分别统计表中2、3、4年级的男生总人数和女生总人数。

student表数据结构如下:

stuIdgradeIdsex
02012
02212
03193
05085
06106
01011
02242
04134

要求输出结果显示如下:

USE School;

#请在此处添加实现代码
########## Begin ##########

#1.查询表中2,3,4年级中分别男女的总人数
select gradeId,sex,count(*) #从student表中选择年级、性别、和统计每一行的个数
from student
where gradeId in (2,3,4)#筛选年级2,3,4出来
group by gradeId,sex#根据相同gradeId和sex划分为一个组内
########## End ##########

第2关:使用 HAVING 与 ORDER BY

任务描述

本关任务:按照要求编写sql查询语句。

相关知识

为了完成本关任务,你需要掌握:

1.使用having子句进行分组筛选;

2.HavingWhere的区别;

3.Group ByOrder By

使用having子句进行分组筛选

简单来说,having子句用来对分组后的数据进行筛选,即having针对查询结果中的列发挥筛选数据作用。因此having通常与Group by连用。

基本格式:

 
  1. select [聚合函数] 字段名 from 表名 [where 查询条件] [group by 字段名] [having 字段名 筛选条件]

Info的数据信息仍如下:

categorycountdigest
a5a2002
a2a2001
a11a2001
b20b2003
b15b2002
b3b2001
c9c2005
c9c2004
c8c2003
c7c2002
c4c2001

示例:查询将表中数据分类后数量大于20的类别信息

select语句中,wheregroup byhaving子句和聚合函数的执行次序如下:

1.where子句从数据源中去除不符合条件的数据;

2.然后group by子句搜集数据行到各个组中;

3.接着统计函数为各个组计算统计值;

4.最后having子句去掉不符合其组搜索条件的各组数据行。

HavingWhere的区别

where子句都可以用having代替,区别在于where过滤行,having过滤分组;

  • where子句的作用是在对查询结果进行分组前,将不符合where条件的去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行;

  • having子句的作用是筛选满足条件的,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件过滤出特定的组,也可以使用多个分组标准进行分组。

having结合where示例:

Group By 和 Order By

基本格式

 
  1. select [聚合函数] 字段名 from 表名 [where 查询条件] [group by 字段名] [order by 字段名 排序方向]

示例:(以降序方式输出数据分类的汇总)

若分组字段和排序字段一样时,可不需要order by关键字,则只需告知排序方向,即可简写成:

编程要求

根据提示,在右侧编辑器补充代码:

  1. 我们要评选三好学生,条件是至少有两门课程在90分以上(包括90分)才能有资格,请列出符合的学生的学号(sno)及其90分以上(包括90分)科目总数;

  2. 学校评选先进学生,要求平均成绩大于90分(包括90分)的学生都有资格,并且语文课必须在95分以上(包括95分),请列出有资格的学生的学号(sno)及其科目的平均分。

给定数据表tb_grade格式如下:

snopnoscore
1语文95
1数学98
1英语90
2语文89
2数学91
2英语92
3语文85
3数学88
3英语96
4语文95
4数学89
4英语88

测试说明

平台会对你编写的代码进行测试:

预期输出:

USE School;

#请在此处添加实现代码
########## Begin ##########

#1.查询表中至少有两门课程在90分以上的学生信息
select sno,count(*)#选择学生、科目个数连接
from tb_grade
where score>=90 #条件是分数大于90
group by sno having count(pno)>=2;#选择将sno相同的化为一组内,并且选择pno计数大于2的



#2.查询表中平均成绩大于90分且语文课在95分以上的学生信息
select sno,avg(score) 
from tb_grade 
where sno
in #嵌套筛选,先在表中选出语文成绩大于95的同学,然后在外边,从这些同学当中选出平均成绩大于90的
(select sno 
 from tb_grade 
 where  score>=95 and pno ="语文"
 ) 

group by sno having avg(score)>=90;

########## End ##########

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

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

相关文章

交通 | 应用Benders分解方法解决多车生产路由问题

论文解读​ 曲晨辉,王飞龙 1 知识补充和文章贡献 2.1 IRP (Inventory routing problems) IRP关注的是在一个给定的规划范围内,从一个设施到一组客户的单一产品分配。客户以给定的速度消费产品,并可将产品的库存维持在一个特定的水平上。一组…

HTB-SolidState

HTB-SolidState信息收集80端口Apache Jamesmindyrbash绕过mindy -> root总结信息收集 80端口 目录扫描 从/README.txt文件里知道他们在捣鼓一个新的秘密项目,这个新的秘密项目就是一个新的网页外观。 80端口先点到为止,免得进兔子洞。 Apache James …

基于SpringBoot技术点餐系统的设计与实现(论文+源码)_kaic

摘 要 饮食行业的发展推动了服务的提升,在线点餐服务模式随之产生。相比于传统点餐,在线点餐更加方便地浏览菜品,挑选菜品,有更好的用餐体验。系统的使用减少了人工成本,方便数据统计,便于提供更优质的服务…

大数据学习路线图(2023完整版)适合收藏

大数据开发是一门涉及处理和分析大规模数据的技术领域,随着大数据技术的不断发展和应用,对大数据开发人员的需求也在逐渐增加。就业前景相对较好,尤其在科技行业和数据驱动型企业中。大数据开发的前景还是有很多优势的,就业范围广…

Ubuntu14.04+ROS-indigo版本安装教程

ROS之indigo版本安装教程 1、Ubuntu14.04安装(indigo对应的ubuntu版本是14.04) Ubuntu14.04 的下载地址https://www.releases.ubuntu.com/14.04/ 64位的电脑下载如下图 在虚拟机上配置了该镜像(我用的是VMware虚拟机) 2、ROS …

mac苹果电脑运行慢卡顿如何释放内存?

苹果电脑受到大众追捧的大部分原因是她高效的运行速度,为我们带来了很大的方便。但是大家有没有发现经过几年时间后,现在自己的苹果电脑运行速度没有以前快了呢?导致苹果电脑变慢的原因有哪些?苹果电脑变慢了怎么办?小…

平凡的Python为什么能一跃成为世界排名第一的语言

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:大周|慕课网讲师 一、前言 本文将结合个人经历为各位同学客观的分析是否有学习Python的必要、Python适合谁学、为什么…

webgl-画三角形

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

007:Mapbox GL实现地图地点搜索定位功能

第007个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现地图地点搜索定位功能 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共68行)安装插件相关API参考:专栏目标示例效果 配置方式 1)查看基础设…

linux 命名管道 mkfifo

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理介绍 接口说明 代码演示 结尾 前言 本专栏主要分享linux下并发编程…

HBU 2023 Simple problem set

目录 7-1 递推公式 7-2 存钱罐 7-3 买东西 7-4 双重子串 7-5 放小球 7-6 最短路径 7-7 统计子序列的个数 7-8 摆放灯笼 7-9 选零食 7-10 1还是2 7-11 最少的门禁数量 7-12 青春猪头之开学了要好好学习 7-13 青春猪头之毕设真头大 7-14 青春猪头之我没学过C语言 7-15 发射小球 7…

FreeRTOS 列表和列表项

文章目录一、什么是列表和列表项&#xff1f;二、列表和列表项初始化三、列表项插入四、列表项末尾插入五、列表项的删除六、列表的遍历七、列表项的插入和删除实验一、什么是列表和列表项&#xff1f; 1. 列表 列表是 FreeRTOS 中的一个数据结构&#xff0c;概念上和链表有点…

【九】springboot启动源码 - refreshContext结束后

afterRefresh 钩子函数,默认实现为空 listeners.started 执行实现SpringApplicationRunListener的started回调 通用处理 this.listeners在之前已经通过SPI加载 获取SpringApplicationRunListener的实现类 EventPublishingRunListener 推送ApplicationStartedEvent事件…

红队内网靶场

文章目录开篇介绍靶场介绍靶场下载以及配置Tomcat Get Shell突破DMZ防火墙拿下域内成员机器将内网机器上线到CS使用Adfind侦察子域信息控制子域DCRadmin登录子域进行权限维持(白银票据/ACL)子域bloodhound获取父域信息分析子域Krbtgt密钥创建跨域金票Dcsync父域PTH父域DC准备打…

Activity启动模式

Activity的启动模式 首先activity启动之后是放在任务栈中的&#xff0c;task stack&#xff0c;既然是栈&#xff0c;遵循先进后出原则。有玩家比喻oncreate是入栈&#xff0c;onDestroy是出栈。 同一个APP中&#xff0c;不同的activity可以设置为不同的启动模式。在manifest…

【深一点学习】我用CPU也能跟着沐神实现单发多框检测(SSD),从底层了解目标检测任务的实现过程,需要什么样的方法调用。《动手学深度学习》Yes,沐神,Yes

目标检测近年来已经取得了很重要的进展&#xff0c;主流的算法主要分为两个类型[1611.06612] RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation (arxiv.org)&#xff1a;&#xff08;1&#xff09;two-stage方法&#xff0c;如R-CNN系算法…

centos7.2-rh7.2安装docker的问题

目录1. 环境2. 问题排查2.1 failed to start daemon: error initializing graphdriver: overlay2: the backing xfs filesystem2.2 centos7.2内核bridge.ko问题2.3 kernel:unregister_netdevice: waiting for ... to become free. Usage count 12.4 离线安装依赖问题1. 环境 …

AC7811—FOC无感控制代码调试与测试

目录 滑膜观测器调试 开环调试 闭环调试 IF VF DIRECT IF VF DIRECT 磁链观测器 一次/两次预定位 脉冲注入 高频注入 直线or五段曲线 滑膜观测器调试 开环调试 PWM0 两通道接示波器后&#xff0c;屏幕上打印的是开环给定同步转速积分电角度和滑模观测器估计转子电…

【C++】从string开始了解STL

文章目录1.初识STL1.什么是STL2.STL的版本3.STL的六大组件2.string1.string类模板2.string类的构造函数3.string内部数据访问4.string的遍历5.string类的迭代器6.string的Capacity相关接口7.string的修改相关接口8.其他接口1.初识STL 1.什么是STL STL(standard template liba…

Kotlin在Android开发中的应用与实践

Kotlin在Android开发中的应用与实践 通过本篇文章你将了解到下面内容&#xff1a; 介绍Kotlin语言&#xff1a;简述Kotlin语言的背景、特点和优势&#xff0c;为什么Kotlin在Android开发中变得越来越流行。 Kotlin与Java的对比&#xff1a;对比Kotlin和Java在语法、编程范式、…