mysql over rank_mysql实现Oracle 的rank() over()函数
之前要查询排序且有排名,如果是oracle的话有rank() over()函数,但是mysql没有这样的函数,只能自己试着用变量实现
表结构:
SELECT id,
score ,
@rank := @rank + 1 AS rank
FROM a, (SELECT @rank := 0) tmp
ORDER BY score desc ;
不过这样有一个问题如果同时有两个99分rank也会顺序的排序
我想到的临时解决办法就是内层进行一次group by,仅算出分数的排名,再用分数与a表匹配
sql代码:
SELECT a.id,a.score,b.rank from a,(
SELECT a.score ,
@rank := @rank + 1 AS rank
FROM (SELECT score from a GROUP BY score) a, (SELECT @rank := 0) tmp
ORDER BY score desc
) b
where a.score = b.score
ORDER BY b.rank;
不知道有没有更好的解决办法,如果不正确希望指点
mysql over rank_mysql实现Oracle 的rank() over()函数相关推荐
- mysql 类似 nvl,浅谈mysql可有类似oracle的nvl的函数
浅谈mysql可有类似oracle的nvl的函数 要用ifnull,而不是isnull isnull是判断是否为null,返回值是1表示null或者0表示不为空 ifnull等同于oracle的nvl ...
- Oracle中rank() over()函数排名
--已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:dense_rank,rank 查询原始数据:学号.姓名.科目名.成绩 select ...
- MYSQL 生成UUID() 即 ORACLE 中的guid()函数
MYSQL 生成UUID 即 guid 函数 -- 带 - 的UUID select UUID() -- 去掉 - 的UUID select replace(uuid(),'-','') 转载于:ht ...
- oracle sql时间排序函数,sql的rank函数
SQL SERVER 2008排序函数(窗口函数) 排序函数可以用来协助给结果集增加位置信息.SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号 ...
- Mysql,SqlServer,Oracle主键自动增长的设置
Mysql,SqlServer,Oracle主键自动增长的设置 参考文献 http://blog.csdn.net/andyelvis/article/details/2446865 1.把主键定义为 ...
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
Oracle 数据库数据排名函数: rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名) ...
- Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...
- Mysql UTF8 varchar与Oracle ZHS16GBK varchar2同长度下存汉字的差异
目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 3 5.1 验证实验... 3 5.2 问题分析... 5 6 延展.. ...
- oracle的rank,over partition 使用 和lead
http://blog.csdn.net/rokii/article/details/6429145 排列(rank ())函数.这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后 ...
最新文章
- 详解PyTorch编译并调用自定义CUDA算子的三种方式
- 银行计算机设备管理 总结,【2017年银行自助设备中心年终总结】_银行自助设备工作总结...
- 【五校联考7day2】QYQ的图
- Vue(ES6)中的data属性为什么不能是一个对象?
- [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]
- Software-Defined Networking (SDN) Definition-软件定义网络
- 拓扑排序:如何确定代码源文件的编译依赖关系
- EditPlus使用编辑Object C
- 用Python网络爬虫来抓取网易云音乐歌词
- 含重根的三阶实对称矩阵的快速对角化方法
- Java黑皮书课后题第6章:*6.7(金融应用:计算未来投资回报率)编写一个方法,计算按照给定的年数和利率计算未来投资回报值,未来投资回报值是用编程练习题2.21中的公式得到的,使用下面方法头
- win7添加网页ftp服务器地址,win7添加ftp服务器地址
- 04.VisionPro工具说明
- Amazon亚马逊卖家设置World First(WF卡)收款教程!
- ES7-ES11新特性汇总
- 强制OOALV运行数据修改事件
- 蜂鸣器播放《两只老虎》
- L2-4 彩虹瓶 (25 分)-2019天梯赛全国总决赛
- 利用DISM修复WIN11的系统组件错误
- Html.fromHtmls的使用