java 并列排名,178. 分数排名
题目描述
编写一个 SQL 查询来实现分数排名。
如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
重要提示: 对于 MySQL 解决方案,如果要转义用作列名的保留字,可以在关键字之前和之后使用撇号。例如 `Rank`
题解
# Write your MySQL query statement below
SELECT
Score,
DENSE_RANK() OVER(ORDER BY Score DESC) AS `Rank`
FROM
Scores;
DENSE_RANK、RANK、ROW_NUMBER 的使用说明
Function
Description
DENSE_RANK
并列连续排名
RANK
并列跳跃排名
ROW_NUMBER
连续排名
eg.
--------------------------------------------------------
-- table_name: Scores
--
-- +----+-------+
-- | id | score |
-- +----+-------+
-- | 1 | 78 |
-- | 2 | 89 |
-- | 3 | 86 |
-- | 4 | 91 |
-- | 5 | 78 |
-- | 6 | 89 |
-- | 7 | 89 |
-- +----+-------+
--------------------------------------------------------
--------------------------------------------------------
SELECT
id,
score,
DENSE_RANK() OVER(ORDER BY score DESC) AS `DENSE_RANK`,
RANK() OVER(ORDER BY score DESC) AS `RANK`,
ROW_NUMBER() OVER(ORDER BY score DESC) AS `ROW_NUMBER`
FROM
Scores;
--------------------------------------------------------
--------------------------------------------------------
-- result:
--
-- +----+-------+------------+------+------------+
-- | id | score | DENSE_RANK | RANK | ROW_NUMBER |
-- +----+-------+------------+------+------------+
-- | 4 | 91 | 1 | 1 | 1 |
-- | 2 | 89 | 2 | 2 | 2 |
-- | 6 | 89 | 2 | 2 | 3 |
-- | 7 | 89 | 2 | 2 | 4 |
-- | 3 | 86 | 3 | 5 | 5 |
-- | 1 | 78 | 4 | 6 | 6 |
-- | 5 | 78 | 4 | 6 | 7 |
-- +----+-------+------------+------+------------+
--------------------------------------------------------
java 并列排名,178. 分数排名相关推荐
- LeetCode数据库 178. 分数排名
178. 分数排名 SELECT Score, (SELECT COUNT(DISTINCT(b.Score))# 查看有多少个b.Score大于等于当前的a.ScoreFROM Scores AS ...
- 178.分数排名(数据库)
178.分数排名(数据库) 题目 示例 解题 方法一 方法二 题目 编写 SQL 查询对分数进行排序.排名按以下规则计算: 分数应按从高到低排列. 如果两个分数相等,那么两个分数的排名应该相同. 在排 ...
- leetcode数据库题库-178. 分数排名
leetcode数据库题库-178. 分数排名https://leetcode-cn.com/problems/rank-scores/题目核心是[重复且连续]的排序 ,排序相关函数简单整理下 一.R ...
- leetcode 178. 分数排名(SQL)
编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔". + ...
- LeetCode MySQL 178. 分数排名(dense_rank连续排名)
文章目录 1. 题目 2. 解题 1. 题目 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同. 请注意,平分后的下一个名次应该是下一个连续的整数值. 换句话说 ...
- 【sql】178. 分数排名---两种解决方法,是否使用group by分组成为重点,建议使用分组!!!
SQL架构 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔&q ...
- 文巾解题 178. 分数排名
1 题目描述 2 解题思路 最后的结果包含两个部分,Score这一列是降序排列的分数,Rank这一列则是每个分数对应的排名. SELECT s1.Score, (SELECT COUNT( DISTI ...
- LeetCode力扣刷题数据库(178):分数排名
178分数排名 表: Scores +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | ...
- mysql并列查询_MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码...
前言 本文主要介绍了关于mysql实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 表结构: create table test ...
最新文章
- 孙立岩 python-basic: 用于学习python基础的课件(十三十四 十五)
- Flask 备注一(单元测试,Debugger, Logger)
- boost::math::tools::luroth_expansion用法的测试程序
- HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)
- c++中的函数适配器
- 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
- java简单自定义Annotation
- linux期中测试答案 版本号,Linux认证测试题含答案
- mysql 清空二进制日志
- HttpClient配置
- 【算法】排序_直接插入排序及其 优化(希尔排序)
- java网络爬虫视频教程下载
- 基于Office Visio 2010 图表绘制
- 机器学习十大算法!入门看这个就够了~
- 对数据运营工作的思考及优化方向
- c语言 编译开关用法,C语言中define的使用方法
- 内嵌资源html,go 1.16 embed 实现资源文件(html, css, js等)内嵌
- 修改时验证名称是否重复除了本身
- 小觅相机录制rosbag数据集
- QA质量管理:构建全过程质量管理体系
热门文章
- android 省市区选择器
- VirtualBox虚拟机与主机互相访问开启
- PostgreSQL11 data数据库目录迁移
- jquery ajax json转换出错Invalid JSON
- 计算机硬件基础大纲,计算机硬件基础教学大纲..docx
- linux date 常用格式,5、总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令...
- 使用adb查看数据库的一些命令
- Spring JdbcTemplate Curd
- sql语法,未完待续
- Python基础—08-函数使用(02)