group by和min、max函数一起使用

原始数据

查询每科的最高分数

-- 查询每科最高分数
select stuId,classId,stuName,max(score) from student_score group by classId 

错误的结果

这个显然不是对的,或者说不是我们想要的结果,

我们想要的结果是

原因是什么呢?我们知道使用group by分组时,对于有相同的分组字段行会合并成一行,这个时候,如果查询的字段中有非分组字段非分组字段的数据会读取合并的第一行

解决思路是:

方案一:

先将分组的classId和max(score)查出来,作为临时数据然后连表查询

selecta.stuId,a.classId,a.stuName,a.score
fromstudent_score a
inner join 
(selectclassId ,max(score) as scorefromstudent_scoregroup byclassId) b 
ona.classId = b.classIdand a.score = b.score

这种思路是直接匹配数据

还有另外一种思路是,既然非分组是取第一条,那么我们可以按照min还是max来看是用asc还是desc排序

方案二:

因为这里是找最大分数,非分组数据又是取第一条数据,所以我们应该分数倒序

selectb.stuId,b.classId,b.stuName,b.score
from(selecta.stuId,a.classId,a.stuName,a.scorefromstudent_score aorder byscore desc) b
group byb.classId

这个时候还是有问题, 因为mysql 5.6之后版本对排序的sql解析做了优化,子查询中的排序是会被忽略的,所以上面的order by id desc未起到作用

现在的执行结果是这样的,其实还是错误的

所以我们要加上having 1 = 1 来让排序生效

selectb.stuId,b.classId,b.stuName,b.score
from(selecta.stuId,a.classId,a.stuName,a.scorefromstudent_score ahaving1 = 1order byscore desc) b
group byb.classId

最后也得到了想要的结果

查询之后发现,limit也能阻止子查询order by被优化,所以这样也可以

selectb.stuId,b.classId,b.stuName,b.score
from(selecta.stuId,a.classId,a.stuName,a.scorefromstudent_score aorder byscore desclimit 1000) b
group byb.classId

方案三:

当查询的最大、最小值是唯一的时候,还能够通过这样的来查询

selectb.stuId,b.classId,b.stuName,b.score
from student_score b where score in(selectmax(score)fromstudent_score agroup by classId) 

注意,我这里只是演示,如果求分组后的最大分数,且分数都不相同的时候,是可以用这个的,比如最大Id啥之类的,这个是唯一值,可以使用这种方式。我这里因为70分有相同,所以不是很对。

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

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

相关文章

AtomoVideo:AIGC赋能下的电商视频动效生成

✍🏻 本文作者:凌潼、依竹、桅桔、逾溪 1. 概述 当今电商领域,内容营销的形式正日趋多样化,视频内容以其生动鲜明的视觉体验和迅捷高效的信息传播能力,为商家创造了新的机遇。消费者对视频内容的偏好驱动了视频创意供给…

我的自建博客之旅04之Halo

我的自建博客之旅04之Halo Halo是我无意间发现的一款博客框架,如果你讨厌Hexo,Vuepress等静态框架本地编辑,构建部署等方式,如果你想要一款一次搭建,前台是博客,后台是文章维护,并且支持各种定制化折腾的博客框架,可能Halo会比较适合你。 因为我个人还是比较偏技术,…

C语言 扫雷游戏

写了这么长时间的关于C语言的基础知识,相信大家已经学会了使用C语言书写一些基础的代码,上次还编写了三子棋游戏的代码,这次我将编写一个基础版的扫雷游戏。 首先,创建三个文件,两个源文件,一个头文件&…

【C++】用红黑树模拟实现set、map

目录 前言及准备:一、红黑树接口1.1 begin1.2 end1.3 查找1.4 插入1.5 左单旋和右单旋 二、树形迭代器(正向)2.1 前置 三、模拟实现set四、模拟实现map 前言及准备: set、map的底层结构是红黑树,它们的函数通过调用红…

微信小程序小白易入门基础教程1

微信小程序 基本结构 页面配置 页面配置 app.json 中的部分配置,也支持对单个页面进行配置,可以在页面对应的 .json 文件来对本页面的表现进行配置。 页面中配置项在当前页面会覆盖 app.json 中相同的配置项(样式相关的配置项属于 app.js…

android 怎么自定义view

首先了解view的绘制流程: 所以onmeasure ---测量view onlayout---确定view大小----》所以继承ViewGroup必须要重写onlayout,确定子view 而onDraw----是继承view时候需要操作的。 所以:自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件。 自定义Vi…

一个可商用私有化部署的基于JAVA的chat-gpt网站

目录 介绍一、核心功能1、智能对话2、AI绘画3、知识库4、一键思维导图5、应用广场6、GPTS 二、后台管理功能1、网站自定义2、多账号登录支持3、商品及会员系统4、模型配置5、兑换码生成6、三方商户用户打通 结语 介绍 java语言的私有化部署的商用网站还是比较少的 这里给大家介…

第 126 场 LeetCode 双周赛题解

A 求出加密整数的和 模拟 class Solution { public:int sumOfEncryptedInt(vector<int> &nums) {int res 0;for (auto x: nums) {string s to_string(x);char ch *max_element(s.begin(), s.end());for (auto &c: s)c ch;res stoi(s);}return res;} };B 执行…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…

C++作业day6

编程1&#xff1a; 封装一个动物的基类&#xff0c;类中有私有成员&#xff1a;姓名&#xff0c;颜色&#xff0c;指针成员年纪 再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有&#xff1a;指针成员&#xff1a;腿的个数&#xff08;整型 …

六种GPU虚拟化:除了直通、全虚拟化 (vGPU)还有谁?

在大类上计算虚拟化技术有这3种&#xff1a; 软件模拟、直通独占(如网卡独占、显卡独占)、直通共享&#xff08;如vCPU 、vGPU&#xff09;。但对于显卡GPU而言我总结细化出至少这6种分类&#xff1a; 第一种、软件模拟&#xff08;eg sGPU&#xff09;, 又叫半虚拟化。第二种…

[论文笔记] Gradient Surgery for Multi-Task Learning

【强化学习 137】PCGrad - 知乎 多任务学习(multi task):任务权重、loss均衡、梯度下降那点事 - 知乎 ICLR 2020 rejected submission:Yu T, Kumar S, Gupta A, et al. Gradient surgery for multi-task learning[J]. arXiv preprint arXiv:2001.06782, 2020. mul…

yocto编译测试

源码下载 git clone -b gatesgarth git://git.yoctoproject.org/poky lkmaolkmao-virtual-machine:~/yocto$ git clone -b gatesgarth git://git.yoctoproject.org/poky Cloning into poky... remote: Enumerating objects: 640690, done. remote: Counting objects: 100% (13…

Java的图书管理系统,确实有两把斧子 ! ! !

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

15届蓝桥杯备赛(2)

文章目录 刷题笔记(2)二分查找在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组 链表反转链表反转链表II 二叉树相同的树对称二叉树平衡二叉树二叉树的右视图验证二叉搜索树二叉树的最近公共祖先二叉搜索树的最近公共祖先二叉树层序遍历…

Qt 图形视图 /基于Qt示例DiagramScene解读图形视图框架

文章目录 概述从帮助文档看示例程序了解程序背景/功能理清程序概要设计 分析图形视图的协同运作机制如何嵌入到普通Widget程序中&#xff1f;形状Item和文本Item的插入和删除&#xff1f;连接线Item与形状Item的如何关联&#xff1f;如何绘制ShapeItem间的箭头线&#xff1f; 下…

干货整理!火石控股创始人吴渔夫的 AI 游戏思维20条

近日&#xff0c;在一场面对面的直播中&#xff0c;自媒体「极新」创始人姜稳与火石控股创始人、奇酷网络董事长吴渔夫进行视频对话中&#xff0c;探讨了AI技术对游戏行业的新机遇和新挑战。 中国网游先锋&#xff0c;火石控股创始人&#xff0c;奇酷网络董事长吴渔夫认为&…

个人网站制作 Part 9 添加发布、管理博客功能 | Web开发项目

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加博客功能&#x1f528;使用Express和MongoDB&#x1f527;步骤 1: 创建博客模型&#x1f527;步骤 2: 创建博客路由 &#x1f528;使用前端框架&#x1f527;步骤 3:…

大模型文本生成——解码策略(Top-k Top-p Temperature)

{"top_k": 10,"temperature": 0.95,"num_beams": 1,"top_p": 0.8,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好&#xff01;","role"…

电子招投标系统:企业在招标前,需要考虑哪些事项?

招标过程可能非常复杂和耗时&#xff0c;这使得一些企业放弃招标寻源方式。然而&#xff0c;要发展业务和客户群&#xff0c;就不能逃避招标。 在进行招标过程之前&#xff0c;首先要打好基础。让我们来看看企业在设计招标流程时应考虑哪些事项。 1. 确保有购买意向和能力 在…