SQL实现分组排序和组内排序(相同分数并列排名)
创建数据表
CREATE TABLE `heyf_t10` (`empid` int(11) DEFAULT NULL,`deptid` int(11) DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入数据
INSERT INTO `heyf_t10` VALUES ('1', '10', '5500.00');
INSERT INTO `heyf_t10` VALUES ('2', '10', '4500.00');
INSERT INTO `heyf_t10` VALUES ('3', '20', '1900.00');
INSERT INTO `heyf_t10` VALUES ('4', '20', '4800.00');
INSERT INTO `heyf_t10` VALUES ('5', '40', '14500.00');
INSERT INTO `heyf_t10` VALUES ('6', '40', '14500.00');
INSERT INTO `heyf_t10` VALUES ('7', '40', '44500.00');
INSERT INTO `heyf_t10` VALUES ('8', '50', '6500.00');
INSERT INTO `heyf_t10` VALUES ('9', '50', '7500.00');
INSERT INTO `heyf_t10` VALUES ('10', '40', '14000.00');
INSERT INTO `heyf_t10` VALUES ('11', '40', '14500.00');
INSERT INTO `heyf_t10` VALUES ('12', '40', '14550.00');
INSERT INTO `heyf_t10` VALUES ('13', '40', '14550.00');
实现按照部门分组,salary为排序项
select empid,deptid,salary,rank from ( select heyf_tmp.empid,heyf_tmp.deptid,heyf_tmp.salary,@rownum:=@rownum+1 , if(@pdept=heyf_tmp.deptid AND @salary>=heyf_tmp.salary,@rank:=@rank+1,@rank:=1) as rank1, if(@pdept=heyf_tmp.deptid AND @salary=heyf_tmp.salary,@rank:=@rank-1,@rank) as rank,@pdept:=heyf_tmp.deptid,@salary:=heyf_tmp.salaryfrom ( select empid,deptid,salary from heyf_t10 order by deptid asc ,salary desc ) heyf_tmp ,(select @rownum :=0 , @pdept := null ,@rank:=0) a ) result ;
运行结果入下:
SQL实现分组排序和组内排序(相同分数并列排名)相关推荐
- Json数组列表中的数据分组排序、组内排序
文章目录 问题描述 方式一:先全部排序,在分组排序 方式二:使用HashMap取出来分组再组内排序 方式三:使用TreeMap取出来分组再组内排序 测试代码及耗时 问题描述 现在有一个用户信息数组,用 ...
- MapReduce的自制Writable分组输出及组内排序
问题描述: 输入文件格式如下: name1 2 name3 4 name1 6 name1 1 name3 3 name1 0 要求输出的文件格式如下: name1 ...
- linq分组再实现组内排序
哎呀 转前端了 才一年没写后端 linq查询都忘记了 原来炒鸡简单 记录下: 1. 分组查询 // 简单分组查询 var query = (from p in queryorderby p. ...
- mysql的组内排序生成序号_sql 分组查询,组内排序, 组内添加序号 (SQL Server 排序函数 ROW_NUMBER和RANK 用法总结)...
下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. -- 添加序列号 -- 行号用法: ROW_NUMBER() ...
- SQL:分组排序取top N
1 法一 在hive上查询 select a.course,a.score from( select course,score,row_number() over(partition by cours ...
- Sql sever 分组排序
维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序.先创建的一直在前.然后依照创建时间依次排序 ...
- mysql 组内分组_[MySQL] group by 分组并进行组内排序取得最新一条
有一个需求是获取指定用户发送的最新的内容,这个时候需要使用group by分组功能 但是怎么获取最新的呢 ? 如果直接进行order by 是不能实现的,因为MysqL会先执行group by 后执行 ...
- mysql分组后组内排名_SQL实现group by 分组后组内排序
在一个月黑风高的夜晚,自己无聊学习的SQL的时候,练习,突发奇想的想实现一个功能查询,一张成绩表有如下字段,班级ID,英语成绩,数据成绩,语文成绩如下图 实现 查询出 每个班级英语成绩最高的前两名的记 ...
- mysql 排序取前4,mysql分组取每组前几条记录(排序)
首先来造一部分数据,表mygoods为商品表,cat_id为分类id,goods_id为商品id,status为商品当前的状态位(1:有效,0:无效). CREATE TABLE `mygoods` ...
最新文章
- 第5章 用户身份与文件权限
- 网页中显示flash的时候部分显示红色叉好,而有的能够正常显示
- android fragment传递数据,Android 两个Fragment之间传递数据实例详解
- 【计算神经科学冒险者们】2.3 神经编码:特征选择(Neural Encoding:Feature Selection)...
- PyTorch之实现LeNet-5卷积神经网络对mnist手写数字图片进行分类
- SecureCRT远程连接Ubuntu,SecureCRT开发环境配置
- 收藏 | 理解卷积神经网络中的自注意力机制
- u盘插入后计算机内没有选项,U盘插到电脑,无法读取,属性里面空间全是0是怎么回事?...
- Ubuntu设置静态IP地址的几种方法
- idea xml高亮问题
- 女儿当自强,男儿更当自强
- AutoRun机制详解
- FLUENT算例2:混合弯管的流动与传热
- ps CS6 不能直接拖入图片的问题!!win8 系统下
- python分句_Python 中文分句 | 学步园
- 前端模型--css动画(旋转八音盒)
- 未转变者服务器车怎么得,未转变者刷车指令大全 | 手游网游页游攻略大全
- java实体类包怎么命名,程序那些事
- 《把时间当作朋友》读后感
- 汽车诊断仪常用特殊功能-ABS排气