MySQL之实现Oracle中的rank()函数的功能
2018-08-02 11:41
162 查看
假设表格为student, 数据如下:
我们要在MySQL中实现Oracle中的rank()函数功能,即组内排序,具体来说: 就是对student表中按照课程(course)对学生(name)按分数(score)高低进行排名。
首先新建存储过程realize_rank_in_MySQL,代码如下:
DROP PROCEDURE IF EXISTS realize_rank_in_MySQL; DELIMITER ;; CREATE PROCEDURE realize_rank_in_MySQL() BEGIN DECLARE i int; SET i = 0; WHILE i < (select count(DISTINCT course) from student) DO SET @ROW =0; INSERT INTO student_rank SELECT *, (@ROW:=@ROW+1) AS rank FROM student WHERE course=(select DISTINCT course from student limit i,1) ORDER BY score DESC; set i = i + 1; END WHILE; END ;; DELIMITER ;
然后输入以下查询语句即可:
drop table if exists student_rank; create table student_rank like student; alter table student_rank add rank int; call realize_rank_in_MySQL; select * from student_rank;
结果如下:
注意:这里的排名并没有实现分数相同时排名也一样的情形。
相关文章推荐
- 【转】MySQL实现Oracle里的 rank()over(ORDER BY) 功能
- mysql实现oracle的分析函数lag和rank
- MySQL实现类似Oracle中的decode()函数的功能见解 乐杨俊
- mysql 如何实现oracle中decode(...)函数的功能
- MySQL中实现Oracle里面 rank()over ( PARTITION BY ORDER BY) 分类分组功能
- mysql实现oracle分析函数功能 over
- MySQL中实现Oracle里面 rank()over ( PARTITION BY ORDER BY) 分类分组功能
- mysql实现oracle分析函数功能 over
- oracle函数dense_rank(),row_number(),connect_by_root(),start with connect by 用mysql如何实现
- mysql 实现 row_number和rank功能
- Oracle List 功能 《=》 Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Mysql实现oracle decode()函数
- ORACLE的几个函数在MYSQL里面的简单实现
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能在Mysql中如何实现Oracle中的递归
- oracle和mysql功能相同的函数
- sqlserver下用函数实现 oracle 的树查询( start with connect by ) 功能
- SQL SERVER 函数组合实现oracle的LPAD函数功能
- 【原创】ORACLE的几个函数在MYSQL里面的简单实现
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- 自定义Oracle 函数,传入参数,实现简单的功能