Mysql取分组中前N条记录
表结构如下:
CREATE TABLE `dwb_rmirror_req_d` (
`thedate` varchar(10) NOT NULL DEFAULT '',
`node` varchar(15) NOT NULL DEFAULT '',
`req_num` bigint(20) DEFAULT NULL,
PRIMARY KEY (`thedate`,`node`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
表中的记录如下:
mysql> select * from dwb_rmirror_req_d;
+----------+------+------------+
| thedate | node | req_num |
+----------+------+------------+
| 20160215 | f | 2 |
| 20160215 | i | 1 |
| 20160215 | l | 3 |
| 20160217 | f | 2 |
| 20160217 | i | 1 |
| 20160217 | l | 3 |
| 20160218 | f | 2 |
| 20160218 | i | 1 |
| 20160218 | l | 3 |
| 20160219 | f | 2 |
| 20160219 | i | 1 |
| 20160219 | l | 3 |
| 20160220 | f | 2 |
| 20160220 | i | 1 |
| 20160220 | l | 3 |
| 20160221 | f | 2 |
| 20160221 | i | 1 |
| 20160221 | l | 3 |
+----------+------+------------+
18 rows in set (0.00 sec)
1.获取每天查询量最大的记录:
select a.thedate,a.node,a.req_num from dwb_rmirror_req_d a left join dwb_rmirror_req_d b
on a.thedate = b.thedate and a.req_num <= b.req_num
group by a.thedate,a.node,a.req_num
having count(b.node)<=1;
结果如下:
+----------+------+------------+
| thedate | node | req_num |
+----------+------+------------+
| 20160215 | l | 3 |
| 20160217 | l | 3 |
| 20160218 | l | 3 |
| 20160219 | l | 3 |
| 20160220 | l | 3 |
| 20160221 | l | 3 |
+----------+------+------------+
6 rows in set (0.01 sec)
2. 获取每天查询量最高的两条记录:
select a.thedate,a.node,a.req_num from dwb_rmirror_req_d a left join dwb_rmirror_req_d b
on a.thedate = b.thedate and a.req_num <= b.req_num
group by a.thedate,a.node,a.req_num
having count(b.node)<=2
order by a.thedate,a.req_num;
结果如下:
+----------+------+------------+
| thedate | node | req_num |
+----------+------+------------+
| 20160215 | f | 2 |
| 20160215 | l | 3 |
| 20160217 | f | 2 |
| 20160217 | l | 3 |
| 20160218 | f | 2 |
| 20160218 | l | 3 |
| 20160219 | f | 2 |
| 20160219 | l | 3 |
| 20160220 | f | 2 |
| 20160220 | l | 3 |
| 20160221 | f | 2 |
| 20160221 | l | 3 |
+----------+------+------------+
12 rows in set (0.01 sec)
Mysql取分组中前N条记录的更多相关文章
- MSSQL 查询分组前N条记录
sql语句中,查询分组中前n条记录的sql语句如下 第一种方法 select * from consultingfeebill awhere n>(select count(*) from co ...
- mysql 分组取最新的一条记录(整条记录)
方法:mysql取分组后最新的一条记录,下面两种方法.一种是先筛选 出最大和最新的时间,在连表查询.一种是先排序,然后在次分组查询(默认第一条),就是最新的一条数据了 #select * from ...
- mysql 查询每个分组前N条记录
mysql 查询每个分组前N条记录 假设存在表movie, 有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...
- MySQL使用INSERT插入多条记录
MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...
- 【面经】面试官:如何以最高的效率从MySQL中随机查询一条记录?
写在前面 MySQL数据库在互联网行业使用的比较多,有些小伙伴可能会认为MySQL数据库比较小,存储不了很多的数据.其实,这些小伙伴是真的不了解MySQL.MySQL的小不是说使用MySQL存储的数据 ...
- MySQL 先按某字段分组,再取每组中前N条记录
按 gpcode每组 取每组 f4 最大的那条记录: 方法一: select * from calcgsdataflash a where gscode = 'LS_F' and ymd >= ...
- [mysql] 先按某字段分组再取每组中前N条记录
From: http://blog.chinaunix.net/uid-26729093-id-4294287.html 请参考:http://bbs.csdn.net/topics/33002126 ...
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...
- mysql关联取附表最后一条记录,附加lareval orm实现
MySQL 多表关联一对多查询取最新的一条数据:https://blog.csdn.net/u013902368/article/details/86615382 Laravel query buil ...
随机推荐
- JavaScript 复制内容到剪贴板
<html> <head> <title>Selector</title> <script language="javascript&q ...
- bazel、tensorflow_serving、opencv编译问题
1.出现该错误表示opencv冲突,该机器上有多个opencv版本. 解决方法:卸载低版本opencv 2.bazel中BUILD的写法: copts中放置-I/usr/include/.-D lin ...
- 3、eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法
因为rt的source在jdk目录的src.zip文件里,将文件设置为jdk下的src.zip就行了.具体如下 Window>Preferences>Java>Installed J ...
- java 生成可执行jar包
jar -cvfm my.jar [配置主函数入口文件] [包] Main-Class: 包名.类名 注意“:”后边有一个空格,类名后边要有回车换行
- 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义http请求
初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因一是LR本身存在对测试环境的兼容性问题导致录制失败,更深层次的原因是录制者不清楚LR录制脚本的原理,或 ...
- HTTP1.1协议请求方面参数
请求信息 GET / HTTP/1.1 ->请求行 Accept: */* Accept-Languag ...
- 10个常见的Android 新手误区
在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的开发社区,以及从所周知的编程语言(Java),使得开发A ...
- C 应用
前言 1)操作符两端必须加空格,(每行第一个赋值语句对齐). 2)变量名必须是英文(不能是拼音):英文.数字.下划线和美元符号. 3)等于号 == 反过来写(0 == i%4)防止少些赋值号的错误. ...
- 【js】正则表达式(I)
正则表达式是由英文词语regular expression翻译过来的,就是符合某种规则的表达式.正则表达式在软件开发中应用非常广泛,例如,找出网页中的超链接,找出网页中的email地址,找出网页中的手 ...
- ActiveReports 报表控件官方中文新手教程 (1)-安装、激活以及产品资源
本系列文章主要是面向初次接触 ActiveReports 产品的用户,能够帮助您在三天之内轻松的掌握ActiveReports控件的基本用法,包含安装.激活.创建报表.绑定数据源以及公布等内容. ...