Mysql 行号+分组行号+取Top记录 SQL

select * from (
SELECT (@rowNum := @rowNum + 1) as rowNum -- 全量行号
, a.col1 , case
when @groupItem != a.col1 then @groupRowNum := 1
else @groupRowNum := @groupRowNum + 1 end as groupRowNum -- 根据分组项目,设置分组行号, 分组项目与当前行分组项目不一致时,则分组行号重新置 1
, case
when @groupItem != a.col1 then @groupItem := a.col1
else round(@groupItem, 0) end as groupItem -- 标记分组项目, 为分组行号提供判断依据
, col2
, num
FROM (
SELECT col1 , col2, COUNT(*) as num
FROM tb_test
GROUP BY col1, col2
) a
inner join (select @rowNum := 0 as rowNum) t1 -- 全量行号变量 初始化
inner join (select @groupRowNum := 0) t2 -- 分组行号变量 初始化
inner join (select @groupItem := -1) t3 -- 分组项目变量 初始化
where 1 = 1
order by a.col1, num desc -- 分组行号排序条件
limit 100000 -- order by 在子查询中不能行, 需要加 limit
) x
where 1=1
and groupRowNum <=3 -- 增加 分组后 top n 条件
;

Mysql 行号+分组行号+取Top记录 SQL的更多相关文章

  1. 关于MYSQL group by 分组按时间取最大值的实现方法!

    类如 有一个帖子的回复表,posts( id , tid , subject , message , dateline ) , id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), ...

  2. 关于MYSQL group by 分组按时间取最大值的实现方法

    类如 有一个帖子的回复表,posts( id , tid , subject , message ,  dateline ) , id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), ...

  3. 【mysql】【分组】后取每组的top2

    DROP TABLE IF EXISTS `tb1`; CREATE TABLE `tb1` ( `id` ) NOT NULL AUTO_INCREMENT, `a` ) DEFAULT NULL, ...

  4. GridView 显示行号 设置行号列的宽度

    /// <summary> /// GridView 显示行号 设置行号列的宽度 /// </summary> /// <param name="gv" ...

  5. APISpace 尾号限行API接口 免费好用

    尾号限行是一种为了缓解城市交通压力而催生的交通制度,措施实施以后对城市交通拥堵起到缓解作用.每个地区的尾号限行规定都有所不同,具体的以当地的为准.   尾号限行API,提供已知所有执行限行政策的共计6 ...

  6. SQL Server 分组后取Top N

    SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿 ...

  7. Hive分组取Top N

    Hive在0.11.0版本开始加入了row_number.rank.dense_rank分析函数,可以查询分组排序后的top值   说明: row_number() over ([partition ...

  8. Mysql的事务及行级锁

    转自:http://www.cnblogs.com/edwinchen/p/4171866.html 以签到为例,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当初表设计的时候, ...

  9. Mysql表锁、行锁、页锁

    参考 http://www.jb51.net/article/50047.htm <MySQL行级锁.表级锁.页级锁详细介绍> 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住 ...

  10. [转]MySQL 表锁和行锁机制

    本文转自:http://www.cnblogs.com/itdragon/p/8194622.html MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整 ...

随机推荐

  1. PPT模板网址

    PPT免费下载网址: https://www.1ppt.com/ PPT模板下载:www.1ppt.com/moban/                行业PPT模板:www.1ppt.com/han ...

  2. 2022.3.9内部群每日三题-清辉PMP

    1.项目经理集合在地理上分散的团队,为一家组织实施新的强制性监管要求.若要获得该相关方的承诺,项目经理应该怎么做? A.设置必要的沟通基础设施 B.召开项目启动大会 C.执行相关方分析 D.让团队集中 ...

  3. 【OA致远】流程表单中选择集团角色

  4. Pytest Fixture(三)

    name: name参数表示可以对fixture的名称进行重命名: 注意:通过name重命名后,继续使用以前的名字调用会报错. import pytest @pytest.fixture(name=' ...

  5. MySQL单表存储上限

    -------------- mysql的上限不是单纯的根据内容的大小决定的.跟数据的条数也有关系. 可以把mysql理解成一个服务器.处理数据的通道的流量有限.(这段瞎编的) MySQL本身并没有对 ...

  6. noi 1.5 24 正常血压

    描述 监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数. 输入 ...

  7. 学习笔记||使用Vue时踩过的坑1.0

    vue介绍:https://cn.vuejs.org/v2/guide/ 1.安装npm install时,长时间停留在fetchMetadata: sill mapToRegistry uri ht ...

  8. Django基础篇 01- 初识Django

    一.Django介绍 flask,FastApi是轻量级服务端开发框架 Django是重量级服务端开发框架 ORM:封装了数据库操作 form:校验请求数据 安装Django: pip install ...

  9. Loadrunner——调试及脚本编译

    调试一般用于运行代码是出现的错误. loadrunner调试方式:断点.单步跟踪.日志输出.值查看器等, 断点设置 断点插入的位置:非空行或非语句的起始,简单来说呢就是断点打在函数前(取消断点就直接在 ...

  10. LINUX配置固定IP以及DNS

    配置固定ip #vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no ...