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条记录的方法或最近几条消费记录相关推荐

  1. mysql 分组排序取前n_mysql分组排序取前N条记录的最简洁的单条sql ! | 学步园

    -- mysql分组排序取前N条记录的最简洁的单条sql. use test; drop table if exists test; create table test ( id int primar ...

  2. MySQL 用gourp by分组后取某一字段最大值

    MySQL 用gourp by分组后取某一字段最大值.最新数据 一.业务说明 二.问题复现 三.解决办法 1.先取出姓名.最大分数 2.把上面查询的数据作为临时表与原表关联查询 一.业务说明 大家在日 ...

  3. java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...

    ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...

  4. mysql 分组内取前几条数据

    项目中很常见的一个需求就是取出每个种类的前n条数据,这是我们通常想到分组(group by),但是group by后伴随着数据的聚合 每个种类只保留了一条数据,这并不满足我们的需求取前n条数据,这时候 ...

  5. mysql 分组排序 取前top n

    力扣mysql 题目为: Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId . +----+-------+ ...

  6. mysql group by 聚合_浅析MySQL使用 GROUP BY 分组聚合与细分聚合

    1. 聚合函数(Aggregate Function) MySQL(5.7 ) 官方文档中给出的聚合函数列表(图片)如下: 除非另有说明,否则聚合函数都会忽略空值(NULL values). 2. 聚 ...

  7. SQL实现分组查询取前几条记录

    我要实现的功能是统计订单日志表中每一个订单的前三条日志记录,表结构如下: 一个订单在定点杆日志表中有多条记录,要根据时间查询出每一个订单的前三条日志记录,sql如下: select b.OrderNu ...

  8. [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit

    前言:         同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.         oracle里面可以通过row_number() OVER (PARTIT ...

  9. MySQL之——GROUP BY分组取字段最大值

    转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: [sql] ...

  10. map分组后取前10个_hive中分组取前N个值的实现

    背景 假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩. 这个就是典型在分组取Top N的需求. 解决思路 对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科 ...

最新文章

  1. 【Qt】error: undefined reference to `vtable for MainWindow‘
  2. Keras中神经网络可视化模块keras.utils.vis_util 的安装
  3. The restricted headers are:
  4. (转载)机器学习知识点(十五)从最大似然到EM算法浅解
  5. Tomcat软连接访问配置(symbol link)
  6. npm + webpack +react
  7. datagrid不显示 easy_[Easy UI ]DataGrid 首次进入页面时,不加载任何数据
  8. win7 nodejs找不到express命令
  9. 【2022年Spring全家桶】Spring5.x 框架详解
  10. 卡尔曼滤波算法-Matlab仿真
  11. windows 重置路由表
  12. 02325《计算机系统结构》自考大题:第 1、2、3 章
  13. 通过培训机构入行的3D游戏建模靠不靠?
  14. R数据分析当中的化整为零(Split-Apply-Combine)策略
  15. nginx加权轮训算法
  16. 宏文件下载_SolidWorks模型英文特征改中文名字方法分享SolidWorks宏文件 [
  17. 关于软件和软件工程师
  18. CISCO数据中心虚拟化之VDC技术和配置
  19. 大数据和云计算技术周报(第58期)
  20. str绑定值的结尾null字符缺失_关于null == 0该如何运用?

热门文章

  1. vue-cli3 vue.config.js配置
  2. 9 多线程对非共享数据
  3. OSGi中的ServletContext
  4. nginx-upload-module模块实现文件断点续传
  5. WordPress 中文图片 上传 自动重命名
  6. 屏幕录像软件Community Clips Recorder简介及其使用技巧
  7. [导入]刚拿积蓄救人 自己又患癌症(我身边的一个真实故事)
  8. 模板题——单链表双链表,数组模拟的栈和队列,单调栈和单调队列
  9. sklearn——model_selection——knn手写识别系统+iris分类
  10. Python读取并遍历CSV数据