Mysql取分组后前N个值
来源:互联网 发布:贵金属喊单软件 编辑:程序博客网 时间:2024/05/21 06:29
表结构如下:
取按id分组后每组的最大值:
上面表示,通过id自关联,每组中,没有其他数能大于它的就是最大数,不能大于等于,因为两组肯定至少存在等于的情况,就查不出来数据。
取按id分组后每组的前三的值
这种方法存在问题,当存在相同值时,前三取出来的数据不一定就是只有三行
create table `test_group_limit` (`row_id` varchar (33),`id` int (11),`num` bigint (11),`log` varchar (33)); insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('1','1','32','e');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('2','1','21','r');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('3','1','54','f');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('4','1','31','d');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('5','1','54','g');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('6','2','32','v');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('7','2','12','b');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('8','2','21','x');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('9','2','76','n');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('10','2','45','z');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('11','2','89','a');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('12','3','32','m');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('13','3','12','k');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('14','3','76','p');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('15','3','45','i');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('16','3','90','l');insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('17','3','65','q');
取按id分组后每组的最大值:
SELECT t1.`id`,t1.`num` FROM `test_group_limit` t1WHERE NOT EXISTS(SELECT 1 FROM test_group_limit WHERE t1.`id`=id AND num>t1.`num`);
上面表示,通过id自关联,每组中,没有其他数能大于它的就是最大数,不能大于等于,因为两组肯定至少存在等于的情况,就查不出来数据。
取按id分组后每组的前三的值
这种方法存在问题,当存在相同值时,前三取出来的数据不一定就是只有三行
SELECT t1.`id`,t1.`num` FROM `test_group_limit` t1WHERE 3>(SELECT COUNT(1) FROM test_group_limit WHERE t1.`id`=id AND num>t1.`num`)order by t1.id asc,t1.num desc
阅读全文
0 0
- Mysql取分组后前N个值
- hive中分组取前N个值的实现
- hive的分组取前n个值
- hive中分组取前N个值的实现
- Hive中分组取前N个值
- hive中分组取前N个值的实现
- Hive中分组取前N个值
- Hive中分组取前N个值
- Hive中分组取前N个值
- Hive中分组取前N个值
- mysql分组取前n条记录
- mysql 分组取前N记录
- MYSQL 分组取前N条数据
- MySQL 查询分页数据中分组后取每组的前N条记录
- MySQL 查询分页数据中分组后取每组的前N条记录
- mysql 分组取前窗口前N的方法
- 分组取前N记录
- 分组取前N记录
- 设计模式——装饰者模式
- JS是一门什么样的语言
- JSP--(Jsp基本语法)
- (Python)矩阵转化
- php生成指定长度的任意字符串
- Mysql取分组后前N个值
- 《Python基础教程》读书笔记(4)之第9章魔法方法、属性和迭代器(关键词:Python/魔法方法/属性/迭代器)
- 防止SQL注入和XSS攻击Filter
- jaris flv player和ckplayer
- 如何在Angular4中引入jquery
- 最大子序列和的四种不同复杂度实现
- React之ref的使用
- 初探Android中的请求服务器并解析返回的json数据
- Elasticsearch之确切值(Exact values)、全文文本(full text)、倒排索引(inverted index)。