dense rank改为mysql_mysql上排名sql的写法,类似oracle的rank和dense

这几天开发提交了几个排名的sql,oracle环境下这类问题就很好解决了,row_number(),rank()或者dense()函数就能搞定,但mysql环境下没有这类函数,那就自己搞:

测试如下:

mysql> select * from animals_inno;

+--------+----+------------+---------------------+----------+

| grp    | id | name       | created             | modified |

+--------+----+------------+---------------------+----------+

| mammal |  1 | dog        | 0000-00-00 00:00:00 | NULL     |

| mammal |  2 | cat        | 0000-00-00 00:00:00 | NULL     |

| bird   |  3 | penguin    | 0000-00-00 00:00:00 | NULL     |

| fish   |  4 | lax        | 0000-00-00 00:00:00 | NULL     |

| mammal |  5 | whale      | 0000-00-00 00:00:00 | NULL     |

| bird   |  6 | ?????????? | 2011-04-13 14:52:48 | NULL     |

| bird   |  7 | ostrich    | 0000-00-00 00:00:00 | NULL     |

| fish   |  8 |            | 0000-00-00 00:00:00 | NULL     |

| fish   |  9 | NULL       | 0000-00-00 00:00:00 | NULL     |

+--------+----+------------+---------------------+----------+

9 rows in set (0.00 sec)

我想要按照grp进行排序,grp相同的情况下。我要占位处理:

SELECT grp,

name,

id,

(SELECT COUNT(*) FROM animals_inno where grp < a.grp) + 1 place

FROM animals_inno a

ORDER BY place;

+--------+------------+----+-------+

| grp    | name       | id | place |

+--------+------------+----+-------+

| bird   | penguin    |  3 |     1 |

| bird   | ?????????? |  6 |     1 |

| bird   | ostrich    |  7 |     1 |

| fish   | lax        |  4 |     4 |

| fish   |            |  8 |     4 |

| fish   | NULL       |  9 |     4 |

| mammal | dog        |  1 |     7 |

| mammal | cat        |  2 |     7 |

| mammal | whale      |  5 |     7 |

+--------+------------+----+-------+

9 rows in set (0.00 sec)

如果grp相同时我不需要占位,则可以:

select grp,

name,

id,

(select count(distinct grp) from animals_inno where grp < a.grp) + 1 place

from animals_inno a

order by place;

+--------+------------+----+-------+

| grp    | name       | id | place |

+--------+------------+----+-------+

| bird   | penguin    |  3 |     1 |

| bird   | ?????????? |  6 |     1 |

| bird   | ostrich    |  7 |     1 |

| fish   | lax        |  4 |     2 |

| fish   |            |  8 |     2 |

| fish   | NULL       |  9 |     2 |

| mammal | dog        |  1 |     3 |

| mammal | cat        |  2 |     3 |

| mammal | whale      |  5 |     3 |

+--------+------------+----+-------+

9 rows in set (0.00 sec)

更多情况下我需要按照grp分组,然后按照id排序后给出每行的排名,

同样,当grp相同需要占位时,可以:

SELECT grp,

name,

id,

(SELECT COUNT(*) FROM animals_inno where grp =a.grp and id< a.id) + 1 place

FROM animals_inno a

ORDER BY grp,place;

+--------+------------+----+-------+

| grp    | name       | id | place |

+--------+------------+----+-------+

| fish   | lax        |  4 |     1 |

| fish   |            |  8 |     2 |

| fish   | NULL       |  9 |     3 |

| mammal | dog        |  1 |     1 |

| mammal | cat        |  2 |     2 |

| mammal | whale      |  5 |     3 |

| bird   | penguin    |  3 |     1 |

| bird   | ?????????? |  6 |     2 |

| bird   | ostrich    |  7 |     3 |

+--------+------------+----+-------+

9 rows in set (0.00 sec)

当grp相同不需要占位时,可以:

SELECT grp,

name,

id,

(SELECT COUNT(distinct id) FROM animals_inno where grp =a.grp and id< a.id) + 1 place

FROM animals_inno a

ORDER BY grp,place;

+--------+------------+----+-------+

| grp    | name       | id | place |

+--------+------------+----+-------+

| fish   | lax        |  4 |     1 |

| fish   |            |  8 |     2 |

| fish   | NULL       |  9 |     3 |

| mammal | dog        |  1 |     1 |

| mammal | cat        |  2 |     2 |

| mammal | whale      |  5 |     3 |

| bird   | penguin    |  3 |     1 |

| bird   | ?????????? |  6 |     2 |

| bird   | ostrich    |  7 |     3 |

+--------+------------+----+-------+

9 rows in set (0.00 sec)

当然,你可以根据你的需求替换grp和id字段,甚至可以根据自己排名的方式(我这里是正序,你可以倒序),只是将""就行啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器硬盘 主板,服务器主板和普通主板有什么区别?

什么是工控服务器?首先我们来看专业上服务器是怎样定义的&#xff1a;工控服务器是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;存储、处理网络上80%的数据、信息&#xff0c;因此也被称为网络的灵魂。也可以这样讲&#xff0c;工控服务器是指一个管理资源并为用户…

键盘输入Scanner类方法属性使用

基本步骤 1.导包&#xff1a;import java.util.Scanner 2.Scanner实例化&#xff0c;创建Scanner对象&#xff1a; Scanner scan new Scanner(System.in) 3.调用Scanner类相关方法&#xff08;next&#xff08;&#xff09;/nextXxx()&#xff09;&#xff0c;来获取指定数据类…

mysql存储过程是不是不能穿sql语句_mysql存储过程能不能直接执行拼接的sql语句...

展开全部当然可以&#xff0c;就是在mysql存储过程中使用动态sql&#xff0c;就可以拼接sql&#xff0c;然62616964757a686964616fe58685e5aeb931333361323562后执行了。给你复制一段&#xff0c;如果不满意&#xff0c;自己搜索 mysql 存储过程 动态sql 就可以了DROP PROCEDU…

服务器系统授权,授权方案说明

我们提供的授权方案有三种&#xff1a;公网授权、加密狗授权、系统序列号SN授权。1. 公网授权如果您的应用服务器可以访问公网&#xff0c;即可使用这种方式。您的服务端在启动运行的时候&#xff0c;会主动访问我们的授权服务器进行合法认证。2. 加密狗授权如果您的应用服务器…

jdk8 参数为方法_JDK 8中的几乎命名的方法参数

jdk8 参数为方法有时在Java中命名方法参数确实很不错&#xff0c;这看起来可能已经很长时间了&#xff0c;但是始终还有其他一些解决方法&#xff0c;例如使用构建器模式来获得类似的行为&#xff0c;这将为一点点。 在我看来&#xff0c;使用JDK 8中的Lambda支持可以使您获得非…

Math.random()获取随机数

调用该方法返回一个double值&#xff0c;为正号&#xff0c;大于等于0.0 &#xff0c;小于1.0 。 [0.0&#xff0c;1.0) 返回的值是从该范围&#xff08;大约&#xff09;均匀分布而伪随机选择的。 示例&#xff1a;获取一个[10&#xff0c;99]的随机数 public class JavaTest…

传奇霸业维护服务器,37传奇霸业8月18日部分区服维护计划

亲爱的玩家:您好&#xff0c;为保证服务器稳定运营&#xff0c;优化游戏体验&#xff0c;《传奇霸业》新版本“炼狱魔域”将代替旧版本“超霸传奇”继续向各大玩家提供游戏服务&#xff0c; 我们将在2016年8月18日对以下区服进行停服维护更新&#xff0c;具体维护时间将视情况提…

jdbc mysql ssh通道_Jdbc使用ssh通道连接Mysql

很多时候&#xff0c;我们可能会出现这种情况&#xff1a;我们的程序无法直接连接数据库&#xff0c;而要通过某一台linux等中间机器来实现一个中转&#xff0c;比如我们的机器是A&#xff0c;数据库是C&#xff0c;A和C不能直接连接&#xff0c;但A可以连接B&#xff0c;B可以…

2018年机器学习趋势与Apache Kafka生态系统相结合

在慕尼黑举行的OOP 2018大会上&#xff0c;我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow&#xff0c;DeepLearning4J或H2O之类的深度学习框架构建可扩展&#xff0c;关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片&#xff0c;并讨论一些有关最新趋势的更…

Java基本语法(13)--条件分支switch-case结构

基本格式结构&#xff1a; switch (表达式/变量) {case 常量1&#xff1a;执行语句1; //情况1case 常量2&#xff1a;执行语句2; //情况2... ... ...default: 以上情况都不满足时执行语句; }说明&#xff1a; switch结构中的表达式/变量只能是如下6种数据类型之一&#xff…

小米岭南通服务器维护,小米岭南通交通联合卡内测开启

原标题&#xff1a;小米岭南通交通联合卡内测开启IT之家12月21日消息 小米岭南通交通联合卡内测开启招募报名&#xff0c;持小米8(含探索版、屏幕指纹版)、小米MIX 系列(不含MIX 3)、小米Note 3/2、小米6/5s/5s Plus手机的用户可开通尝鲜。支持系统小米8和MIX 2S最低支持8.12.2…

mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)

避免索引失效原则(二)注&#xff1a;继上一篇文章继续讲解&#xff1a;避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062作者 &#xff1a; Stanley 罗昊【转载请注明出处和署名&#xff0c;谢谢&#xff01;】体验SQL优化中的概率情况在上一…

js中数组增加添加元素的push方法

特别注意&#xff1a;push&#xff08;&#xff09;方法返回的是增加后新数组的长度&#xff0c;即元素个数。 var arryTest ["星期一","星期二"]; var add "星期三"&#xff1b; var length arryTest.push(add); //length3格式结构&#xf…

ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...

初次尝试用AJAX调用webservice&#xff0c;结果无论怎么设置webservice返回的都是xml对象&#xff0c;一般的jquery处理json是更方便的。webservice理论上将下面这段代码按照说明取消注释&#xff0c;就可以返回json数据了。// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服…

mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

毫不夸张的说&#xff0c;有一半以上的死锁问题由唯一索引贡献&#xff0c;后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,name varchar(1…

ejb 示例 2018_EJB钝化和激活示例

ejb 示例 2018在本教程中&#xff0c;我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息&#xff0c;并在整个会话中保存该信息。 但是&#xff0c;事实是&#xff0c;客户端会话往往会在相当长的时间内保持活动状态…

js微信小程序页面左上角返回跳转指定页面

微信小程序非导航栏tabBar页面左上角返回默认返回上一次的页面&#xff08;即进入当前页面的前一页面&#xff09;&#xff0c;如果需要自定义页面&#xff0c;可以通过js中onUnload函数进行指定页面跳转。 ①关闭所有页&#xff0c;打开url指定页面 onUnload: function () {…

服务器mysql显示链接次数太多,服务器mysql显示链接次数太多

服务器mysql显示链接次数太多 内容精选换一换在本章节中&#xff0c;您将会把游戏应用部署到CCE云容器引擎中&#xff0c;您需要执行以下操作&#xff1a;创建集群&#xff1a;集群是运行应用的逻辑分组&#xff0c;包含一组云服务器资源&#xff0c;每个节点对应一台云服务器。…

laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区

本文档最新版为 8.x&#xff0c;旧版本可能放弃维护&#xff0c;推荐阅读最新版&#xff01;数据库&#xff1a;入门简介Laravel 能使用原生 SQL、查询构造器 和 Eloquent ORM 在各种数据库后台与数据库进行非常简单的交互。当前 Laravel 支持四种数据库:MySQLPostgresSQLiteSQ…

计算机二级web题目(5)--js(Javascript)基础

1 [单选题] 在以下选项中,不合法的标识符是(A)。 A. a*b B. small C. score D. average grade 解析&#xff1a;点击查看标识符命名规则 2 [单选题]在HTML页面中哪些部分能够插入JavaScript?&#xff08;C&#xff09; A. <body>部分 B. <head>部分 C. <body&g…