MySQL 实现row_number() 分组排序功能

时间:2022-08-25 11:53:00

数据库基本脚本

CREATE TABLE `a` (
`ID` INT(10) NULL DEFAULT NULL,
`class` INT(10) NULL DEFAULT NULL,
`score` INT(10) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB; insert into a values (1,1,110);
insert into a values (2,1,120);
insert into a values (3,1,130);
insert into a values (4,1,140);
insert into a values (5,2,210);
insert into a values (6,2,220);
insert into a values (7,2,230);
insert into a values (8,2,240);
insert into a values (9,3,310);
insert into a values (10,3,320);
insert into a values (11,4,410);

 1. 对 class进行分组 取每组的前2条

select id,class,score,rank from (
select b.id,b.class,b.score,@rownum:=@rownum+1 ,
if(@pdept=b.class,@rank:=@rank+1,@rank:=1) as rank,
@pdept:=b.class
from (
select id,class,score from a order by id
) b ,(select @rownum :=0 , @pdept := null ,@rank:=0) c ) result
having rank <3 ;

 rank <3 指的相当月ruwnum<3 每组都自动给上了序号.多少条记录就多少个序号.指的是每组的.

2.  对 class 进行分组   取记录满足两天的,也就是rownum=2 的数据

select id,class,score,rank from (
select b.id,b.class,b.score,@rownum:=@rownum+1 ,
if(@pdept=b.class,@rank:=@rank+1,@rank:=1) as rank,
@pdept:=b.class
from (
select id,class,score from a order by score desc
) b ,(select @rownum :=0 , @pdept := null ,@rank:=0) c ) result
having rank =2 ;

  

MySQL 实现row_number() 分组排序功能的更多相关文章

  1. MYSQL-实现分组排序 对比 ORACLE 和SQLserver用 row&lowbar;number&lpar;&rpar; over&lpar;partition by &rpar; 分组排序功能

    以下是个人笔记: 本文是为了理解 row_number() over(partition by )  和实现各种数据库的分组排序功能 select ROW_NUMBER()over( partitio ...

  2. MYSQL-实现ORACLE- row&lowbar;number&lpar;&rpar; over&lpar;partition by &rpar; 分组排序功能

    MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能 由于MYSQL没有提供类似ORACLE中OVER()这样丰富的分析函数. 所以在MYSQ ...

  3. row&lowbar;number&lpar;&rpar; over&lpar;&rpar;排序功能说明

    1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...

  4. row&lowbar;number&lpar;&rpar; over&lpar;&rpar;分组排序功能 partition by 用于给结果集分组

    select * from ( select row_number() over(partition by Gid order by Gid ASC) as RowN, * from( select ...

  5. MYSQL-实现ORACLE 和SQLserver数据中- row&lowbar;number&lpar;&rpar; over&lpar;partition by &rpar; 分组排序功能

    网上看见了好多例子都基本上是一样的,没有过多的解释,对于一个初学MySQL来说有点难,我把部分转摘过来如下 原文:http://www.cnblogs.com/buro79xxd/archive/20 ...

  6. Yii2实现跨mysql数据库关联查询排序功能

    遇到一个项目,需要跨表网上找了很多的资料,整理一下,方便以后再次使用 背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) ...

  7. MySQL8&period;0 ROW&lowbar;NUMBER、RANK、DENSE&lowbar;RANK窗口函数 分组排序排名

    MySQL8.0 (ROW_NUMBER)窗口函数 排名 暂时理解函数意义,后面再进行优化,如果有关变量排序,查看这个大哥的 mysql的分组排序和变量赋值顺序 先查看一个例子: # 按照每科课程分数 ...

  8. row&lowbar;number&lpar;&rpar; over &lpar;partition by&period;&period;&period;&period;order by&period;&period;&period;&rpar;用法 分组排序

    row_number() over (partition by....order by...)用法 分组排序 row_number() OVER (PARTITION BY COL1 ORDER BY ...

  9. mssql sqlserver 分组排序函数row&lowbar;number、rank、dense&lowbar;rank用法简介及说明

    在实际的项目开发中,我们经常使用分组函数,对组内数据进行群组后,然后进行组内排序:如:1:取出一个客户一段时间内,最大订单数的行记录2: 取出一个客户一段时间内,最后一次销售记录的行记录——————— ...

随机推荐

  1. solr服务(搜索服务)

    1   Solr实现全文搜索 1.1   Solr是什么? Solr 是Apache下的一个*开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的 ...

  2. Windows窗体Winform----show&lpar;&rpar;与showDialog&lpar;&rpar;的区别

    show()与showDialog()的区别 最常见的显示一个新的窗体的方法有两种,下面直接上代码!! A.WinForm中窗体显示 显示窗体可以有以下2种方法:   Form.ShowDialog( ...

  3. div内部实现图片旋转、放大、缩小、拖拽

    药药,切克闹,一人我编码累,累把那bug写成堆.秋高气爽空气干燥你一定dei多喝水,过完了这周我就要回去.趁还有几天.你尽情的来跟我怼~~~ 新的一年,很久没更博客了,眼看十一要来了,听说过了十一就等 ...

  4. windows10&plus;VS&plus;CUDA&plus;cuDNN&plus;TensorFlow-gpu环境搭建(问题及解决)

    TensorFlow-gpu环境需要CUDA+cuDNN+python,CUDA又需要VS,所以,,,环境越来越大哈哈. 1.主要环境: Python 3.6 CUDA9.0 Cudann7.0 Te ...

  5. Carousel轮播图

     <div id="carousel-example-generic" class="carousel slide" data-ride="ca ...

  6. 1&period;2&period;7 Excel表格打印技巧

    1.打印居中显示 把打印的内容放在纸张中间,居中对齐. 方法: ①点击[页面布局]选项卡: ②找到[页面设置]群组点击右下角显示更多: ③在页边距对话框中选择[页边距]: ④勾选[居中方式]中的[水平 ...

  7. 『PyTorch』第七弹&lowbar;nn&period;Module扩展层

    有下面代码可以看出torch层函数(nn.Module)用法,使用超参数实例化层函数类(常位于网络class的__init__中),而网络class实际上就是一个高级的递归的nn.Module的cla ...

  8. ASP&period;NET Core 中的 WebSocket 支持(转自MSDN)

    本文介绍 ASP.NET Core 中 WebSocket 的入门方法. WebSocket (RFC 6455) 是一个协议,支持通过 TCP 连接建立持久的双向信道. 它用于从快速实时通信中获益的 ...

  9. P2319 &lbrack;HNOI2006&rsqb;超级英雄 题解

    [HNOI2006]超级英雄 题目描述 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目, ...

  10. Linux命令应用大词典-第42章 PostgreSQL数据库

    42.1 initdb:初始化PostgreSQL数据库 42.2 pg_ctl:控制PostgreSQL服务 42.3 psql:PostgreSQL交互式客户端工具 42.4 createdb:创 ...