SQL分组排序再取前N条记录
SQL分组排序再取前N条记录
- SQL分组排序再取前N条记录
- 场景设定
- 初始数据
- 多种情况:1-高版本(本人MySql8.0+)
- 多种情况:2-中版本(MySql5.6+)
- 多种情况:3-低版本(MySql5.6及以下)
- 关键说明
- 关键SQL
SQL分组排序再取前N条记录
SQL写的溜,逻辑少一堆,不多说直奔主题。。。
场景设定
统计班级中每个科目考试前3名的学生名单(要求按每科成绩降序排序)
初始数据
多种情况:1-高版本(本人MySql8.0+)
多种情况:2-中版本(MySql5.6+)
多种情况:3-低版本(MySql5.6及以下)
关键说明
1、MySQL低版本不支持 ROW_NUMBER() over ( PARTITION BY xxx )函数;
2、MySql5.7版本做了升级, 针对mysql本身的优化器增加了一个控制优化器的参数叫 derived_merge (“派生类合并”)。因为派生类合并的开启影响了查询结果,通过下拉关键词可临时禁止合并。
可以通过在子查询中使用任何阻止合并的构造来禁用合并,尽管这些构造对实现的影响并不明确。 防止合并的构造对于派生表和视图引用是相同的:
1.聚合函数( SUM() , MIN() , MAX() , COUNT()等)
2.DISTINCT
3.GROUP BY
4.HAVING
5.LIMIT
6.UNION或UNION ALL
7.选择列表中的子查询
8.分配给用户变量
9.仅引用文字值(在这种情况下,没有基础表)
具体可参加:https://blog.csdn.net/undefinedAuth/article/details/99291739
关键SQL
SELECTaa.*
FROM( SELECT *, ROW_NUMBER() over ( PARTITION BY menu ORDER BY score DESC ) AS xx FROM student ) aa
WHEREaa.xx = 1 -- IN (1,2)
SQL分组排序再取前N条记录相关推荐
- LeetCode-185 : sql分组排序再取前几位
题目描述:在EMPLOYEE表中查询每个部门工资前三高的员工. 题目分析: 题目中还是已经描述的比较清楚,比如某个部门工资按从高到低排序为9000,8900,8900,8500,8000-那么该部门需 ...
- mysql 分组排序取前n_mysql分组排序取前N条记录的最简洁的单条sql ! | 学步园
-- mysql分组排序取前N条记录的最简洁的单条sql. use test; drop table if exists test; create table test ( id int primar ...
- SQL 分组排序后取值
SQL 分组排序后取值 场景前要: 从前有三个班级,每个班级的学生成绩各异,有一天睿智的校长希望知道这一年中,每个班级近一年里所有的学生成绩信息,和查询每个班级近一年里所有第一名的学生成绩信息,故事由 ...
- oracle 取前10条记录
1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
前言: 同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来. oracle里面可以通过row_number() OVER (PARTIT ...
- oracle和sql server中,取前10条数据语法的区别
在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...
- Oracle分组取前n条记录
2019独角兽企业重金招聘Python工程师标准>>> create table cl_aa as select modi_staff_id,jm,count(*) numb fro ...
- SQL实现分组查询取前几条记录
我要实现的功能是统计订单日志表中每一个订单的前三条日志记录,表结构如下: 一个订单在定点杆日志表中有多条记录,要根据时间查询出每一个订单的前三条日志记录,sql如下: select b.OrderNu ...
- mysql实现每组取前N条记录的sql,以及后续的组数据量限制
应用场景大概是这样的:比如有很多消息流,这些消息来自不通的app,聚合在一个页面上,查看的时候不能让一个app的消息霸屏,所以就会类似于折叠功能,同一个app的消息只显示最多5条,再多的话,就要点进去 ...
- php sql跳过前四条数据,mysql实现每组取前N条记录的sql,以及后续的组数据量限制...
select a.msg_id, a.com_id, a.data, a.ctime from sns_user_03.user_request_86 a where 5 (select count( ...
最新文章
- 【git效率篇】在window上面的git bash 配置永久别名 快捷方式
- flex制作swc文件
- Python 动态载入模块
- python dash_Dash是Databricks Spark后端的理想基于Python的前端
- mysql基准性能测试标准_mysql性能测试与优化——(一),基准测试套件
- 揭秘“清华园”的“N”种打开方式!
- 工业视觉中的目标检测——兼谈天池大赛优胜方案
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
- C#中的@符号的使用
- 无线网卡没有linux驱动,ubuntu18.04没有无线网卡驱动怎么办?
- python36.dll下载_python36.dll
- 写python的笔记本_python笔记本:更改写入的fi
- JAVA对象,直接新建跟反射新建,有区别
- JSP实用教程(2)——JSP语法
- linux 内核态 抓屏代码,Android screencap截屏指令
- QDU首届易途杯大赛-kk与cillyb的荣誉之战
- 数据仓库:维度分析和指标
- 我终于读懂了适配器模式。。。
- 【过分】Python监控小姐姐/小哥哥微博,了解一下??
- 【QT数字图像处理】(三)QSlider滑块学习
热门文章
- 博途的多步过程控制, 寄存器寻址
- HTML计算平均成绩,成绩平均分怎么算
- 计算机考研专业课资料百度云,考研专业课资料(一)
- 互联网日报 | 1月27日 星期三 | 支付宝集五福活动2月1日开启;华为否认“出售手机业务”传闻;中国联通自有手机品牌发布...
- 分享按钮-新浪微博开放平台
- shping cloud搭建大觅网-之sping cloud初体验
- 电脑文件无法删除怎么办?
- opencv-之求直线的斜率
- JAVA高级工程师知识树
- 通过路由器端口映射实现外网IP访问内网服务器