首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【SQL刷题系列】:leetcode178 Rank Scores

SQL刷题系列:SQL作为一种数据库查询和程序设计语言,是从事数据技术人员必备的技能,也是各大公司的数据分析、数据挖掘、数据库等笔试题必考的一种题。所以,不论大家是转行还是学习都少不了这一关。为此,Python数据科学开启了SQL刷题的系列,希望可以帮助有需要的朋友们。

题目来源:本篇内容为Leetcode上SQL题库178

难易程度:

▌题目描述

Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no "holes" between ranks.

编写一个 SQL查询来对分数排名。如果两个分数相同,那么两个分数应该有同样的排名。但也请注意,如果平分,那么下一个名次应该是下一个连续的整数值。换句话说,名次之间没有“间隔”。

例如,如果给你上面Scores表,你的查询结果应该与下面这样相同(分数从高到低排列)。

▌参考答案

▌答案解析

上面参考答案的思路是:利用表自连接。当查询表的每个分数时,都查找比这个分数大的其它分数的个数(不含重复值),然后在这个个数上加1,最后得到的个数就是每个分数的rank。最后用order by将rank排序即可。逻辑上有点类似于两个for的嵌套循环。

【Python数据科学社区】↓

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015G0QZ5700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券