博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL使用SQL实现Oracle Rank函数功能
阅读量:7246 次
发布时间:2019-06-29

本文共 913 字,大约阅读时间需要 3 分钟。

需求:按照用户的积分对用户进行排名。

事例表结构

CREATE TABLE `users_points` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `user_id` bigint(20) NOT NULL COMMENT '用户ID',  `score` int(11) NOT NULL COMMENT '分数',  `score_rank` int(11) NOT NULL COMMENT '分数排名',  `created_at` datetime NOT NULL COMMENT '创建时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

依据score字段,对user_id进行排名,MySQL可以使用一条SQL实现

select a.user_id, a.score, (select count(distinct b.score) from users_points b where b.score >= a.score) as rank from users_points a order by score desc;
得出的结果

+----+-------+------+| user_id | score | rank |+----+-------+------+| 11 |   100 |    1 ||  8 |    80 |    2 ||  4 |    50 |    3 || 12 |    45 |    4 ||  2 |    40 |    5 ||  6 |    30 |    6 ||  1 |    20 |    7 || 10 |    15 |    8 ||  7 |    10 |    9 ||  5 |    10 |    9 ||  3 |    10 |    9 ||  9 |     5 |   10 |+----+-------+------+

转载地址:http://afbbm.baihongyu.com/

你可能感兴趣的文章
如何用纯 CSS 创作一个苹果系统的相册图标
查看>>
货拉拉完成 3 亿美元 D 轮融资,2018 年全年业务量增长将近 200% ...
查看>>
观点 | 阿里资深技术专家:优秀的数据库存储引擎应具备哪些能力? ...
查看>>
Golang AES加密
查看>>
Android之greenDao使用
查看>>
Ceph Storage Cluster(CEPH存储集群) Configuration配置
查看>>
mysql面试题分组并合并列
查看>>
如何用纯 CSS 创作一台拍立得照相机
查看>>
洛谷 P3369 BZOJ 3224 【模板】普通平衡树(Treap/SBT)
查看>>
Mybatis - 分页拦截器
查看>>
在终端中显示图片
查看>>
大手笔的Uber:无人驾驶项目每月烧钱2000万美元
查看>>
js前端调试的几个小技巧
查看>>
logging模块配置笔记
查看>>
阿里云云盾介绍
查看>>
如何判断硬件是否具有嵌入式Linux支持
查看>>
Postgresql数据库体系结构-存储结构
查看>>
jQuery多层级垂直手风琴菜单
查看>>
前端BUI框架表单教程
查看>>
Hadoop 架构已凋谢 ?!
查看>>