mysql获取分组后每组的最大值实例详解

1. 测试数据库表如下:
create table test ( `id` int not null auto_increment, `name` varchar(20) not null default '', `score` int not null default 0, primary key(`id`) )engine=InnoDB CHARSET=UTF8;
2. 插入如下数据:
mysql> select * from test; +----+----------+-------+ | id | name | score | +----+----------+-------+ | 1 | jason | 1 | | 2 | jason | 2 | | 3 | jason | 3 | | 4 | linjie | 1 | | 5 | linjie | 2 | | 6 | linjie | 3 | | 7 | xiaodeng | 1 | | 8 | xiaodeng | 2 | | 9 | xiaodeng | 3 | | 10 | hust | 2 | | 11 | hust | 3 | | 12 | hust | 1 | | 13 | haha | 1 | | 14 | haha | 2 | | 15 | dengzi | 3 | | 16 | dengzi | 4 | | 17 | dengzi | 5 | | 18 | shazi | 3 | | 19 | shazi | 4 | | 20 | shazi | 2 | +----+----------+-------+
3. 下面是重点,目的是要按照name分组,然后分组后,获取每组中score分数最多的,sql如下
select a.* from test a inner join (select name,max(score) score from test group by name)b on a. name=b.name and a.score=b.score order by a.name;
当然,上面的最后的order by a.name可以去掉
4. 测试结果如下:
+----+----------+-------+ | id | name | score | +----+----------+-------+ | 3 | jason | 3 | | 6 | linjie | 3 | | 9 | xiaodeng | 3 | | 11 | hust | 3 | | 14 | haha | 2 | | 17 | dengzi | 5 | | 19 | shazi | 4 | +----+----------+-------+
5. 网上很多方法都是错误的,比如如下一些,亲测是不行的
select * from (select * from test order by score desc) t group by name order by score desc limit 4; select score,max(score) from test group by name; select * from test where score in (select max(score) from test group by name); select * from test where score in (select substring_index(group_concat(score order by score desc separator ','),',',1) from test group by name); select * from (select name,score,ROW_NUMBER() over(group by name order by score desc) as rowNum from test) rank where rank.rowNum <=1 order by rank.score desc; select * from( select StoresNo,[CustomerCaseNo],[PaymentsTime], ROW_NUMBER() over(partition by CustomerCaseNo order by [PaymentsTime] desc) as rowNum from BAL_paymentsSwiftInfo where StoresNo='zq00000034') ranked where ranked.rowNum <= 1 order by ranked.CustomerCaseNo, ranked.PaymentsTime desc select * from (select * from test order by score desc) as a group by a.name;
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# mysql获取分组后每组的最大值
# mysql
# 分组后最大值
# 详解MySQL如何交换两列值数据
# MySQL如何用GROUP BY分组取字段最大值或最新一条
# MySQL中int最大值深入讲解
# Mysql获取id最大值、表的记录总数等相关问题的方法汇总
# mysql如何获取数据列值(int和string)最大值
# 都是
# 最多
# 希望能
# 谢谢大家
# 每组
# 组中
# 目的是
# 网上
# InnoDB
# CHARSET
# key
# engine
# primary
# linjie
# jason
# xiaodeng
# hust
# br
# select
# gt
相关文章:
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何在Windows虚拟主机上快速搭建网站?
建站之星价格显示格式升级,你的预算足够吗?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
常州企业建站如何选择最佳模板?
香港服务器部署网站为何提示未备案?
建站之星安装后如何配置SEO及设计样式?
,sp开头的版面叫什么?
建站之星ASP如何实现CMS高效搭建与安全管理?
,怎么用自己头像做动态表情包?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何用花生壳三步快速搭建专属网站?
如何在建站之星绑定自定义域名?
简单实现Android验证码
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何通过多用户协作模板快速搭建高效企业网站?
如何在腾讯云免费申请建站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何高效配置香港服务器实现快速建站?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
*服务器网站为何频现安全漏洞?
如何在香港服务器上快速搭建免备案网站?
建站主机选哪家性价比最高?
如何在万网ECS上快速搭建专属网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
设计网站制作公司有哪些,制作网页教程?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站之星后台密码遗忘或太弱?如何重置与强化?
高端网站建设与定制开发一站式解决方案 中企动力
b2c电商网站制作流程,b2c水平综合的电商平台?
网站图片在线制作软件,怎么在图片上做链接?
山东云建站价格为何差异显著?
济南网站制作的价格,历城一职专官方网站?
javascript基本数据类型及类型检测常用方法小结
股票网站制作软件,网上股票怎么开户?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在香港免费服务器上快速搭建网站?
微信小程序 input输入框控件详解及实例(多种示例)
如何通过cPanel快速搭建网站?
如何通过商城自助建站源码实现零基础高效建站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
历史网站制作软件,华为如何找回被删除的网站?
如何在西部数码注册域名并快速搭建网站?
如何在Windows 2008云服务器安全搭建网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
*请认真填写需求信息,我们会在24小时内与您取得联系。