mysql使用GROUP BY分组实现取前N条记录的方法或最近几条消费记录
mysql使用GROUP BY分组实现取前N条记录的方法
更新时间:2016年06月24日 11:25:48 作者:yiluoAK_47 我要评论
关注脚本之家微信公众号(jb51net) 每周都有大礼相送哦
这篇文章主要介绍了mysql使用GROUP BY分组实现取前N条记录的方法,结合实例形式较为详细的分析了mysql中GROUP BY分组的相关使用技巧,需要的朋友可以参考下
本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下:
MySQL中GROUP BY分组取前N条记录实现
mysql分组,取记录
GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。
这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~):
结果:
方法一:
复制代码代码如下:
SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score<b.Score group by a.id,a.SName,a.ClsNo,a.Score having count(b.id)<2 ORDER BY a.ClsNo,a.Score desc;
拆开分析:
<!--[if !supportLists]-->1、 <!--[endif]-->LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score<b.Score
同一个班级(每个班级四个人),分数比当前学生高的记录,那就意味这成绩垫底的学生,将会产生三条记录
<!--[if !supportLists]-->2、 <!--[endif]-->group by a.id,a.SName,a.ClsNo,a.Score having count(b.id)<2
a.id,a.SName,a.ClsNo,a.Score可以代表一个学生(以学生分组),如果count(b.id)<2(成绩超过你的人不能多于2个),那就只剩第一第二了。
方法二:
复制代码代码如下:
SELECT * FROM aa a WHERE 2>(SELECT COUNT(*) FROM aa WHERE ClsNo=a.ClsNo and Score>a.Score) ORDER BY a.ClsNo,a.Score DESC;
这个我觉得是比较有意思的,取每一条记录,判断同一个班级,大于当前成绩的同学是不是小于2个人。
mysql使用GROUP BY分组实现取前N条记录的方法或最近几条消费记录相关推荐
- mysql 分组排序取前n_mysql分组排序取前N条记录的最简洁的单条sql ! | 学步园
-- mysql分组排序取前N条记录的最简洁的单条sql. use test; drop table if exists test; create table test ( id int primar ...
- MySQL 用gourp by分组后取某一字段最大值
MySQL 用gourp by分组后取某一字段最大值.最新数据 一.业务说明 二.问题复现 三.解决办法 1.先取出姓名.最大分数 2.把上面查询的数据作为临时表与原表关联查询 一.业务说明 大家在日 ...
- java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...
ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...
- mysql 分组内取前几条数据
项目中很常见的一个需求就是取出每个种类的前n条数据,这是我们通常想到分组(group by),但是group by后伴随着数据的聚合 每个种类只保留了一条数据,这并不满足我们的需求取前n条数据,这时候 ...
- mysql 分组排序 取前top n
力扣mysql 题目为: Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId . +----+-------+ ...
- mysql group by 聚合_浅析MySQL使用 GROUP BY 分组聚合与细分聚合
1. 聚合函数(Aggregate Function) MySQL(5.7 ) 官方文档中给出的聚合函数列表(图片)如下: 除非另有说明,否则聚合函数都会忽略空值(NULL values). 2. 聚 ...
- SQL实现分组查询取前几条记录
我要实现的功能是统计订单日志表中每一个订单的前三条日志记录,表结构如下: 一个订单在定点杆日志表中有多条记录,要根据时间查询出每一个订单的前三条日志记录,sql如下: select b.OrderNu ...
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
前言: 同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来. oracle里面可以通过row_number() OVER (PARTIT ...
- MySQL之——GROUP BY分组取字段最大值
转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: [sql] ...
- map分组后取前10个_hive中分组取前N个值的实现
背景 假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩. 这个就是典型在分组取Top N的需求. 解决思路 对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科 ...
最新文章
- 【Qt】error: undefined reference to `vtable for MainWindow‘
- Keras中神经网络可视化模块keras.utils.vis_util 的安装
- The restricted headers are:
- (转载)机器学习知识点(十五)从最大似然到EM算法浅解
- Tomcat软连接访问配置(symbol link)
- npm + webpack +react
- datagrid不显示 easy_[Easy UI ]DataGrid 首次进入页面时,不加载任何数据
- win7 nodejs找不到express命令
- 【2022年Spring全家桶】Spring5.x 框架详解
- 卡尔曼滤波算法-Matlab仿真
- windows 重置路由表
- 02325《计算机系统结构》自考大题:第 1、2、3 章
- 通过培训机构入行的3D游戏建模靠不靠?
- R数据分析当中的化整为零(Split-Apply-Combine)策略
- nginx加权轮训算法
- 宏文件下载_SolidWorks模型英文特征改中文名字方法分享SolidWorks宏文件 [
- 关于软件和软件工程师
- CISCO数据中心虚拟化之VDC技术和配置
- 大数据和云计算技术周报(第58期)
- str绑定值的结尾null字符缺失_关于null == 0该如何运用?
热门文章
- vue-cli3 vue.config.js配置
- 9 多线程对非共享数据
- OSGi中的ServletContext
- nginx-upload-module模块实现文件断点续传
- WordPress 中文图片 上传 自动重命名
- 屏幕录像软件Community Clips Recorder简介及其使用技巧
- [导入]刚拿积蓄救人 自己又患癌症(我身边的一个真实故事)
- 模板题——单链表双链表,数组模拟的栈和队列,单调栈和单调队列
- sklearn——model_selection——knn手写识别系统+iris分类
- Python读取并遍历CSV数据