题解 | #刷题通过的题目排名#

刷题通过的题目排名

http://www.nowcoder.com/practice/cd2e10a588dc4c1db0407d0bf63394f3

方法1:连接,分组,去重找到名词,再连接,最后排序;
SELECT c.id,c.number ,d.t_rank
FROM passing_number AS c INNER JOIN(
SELECT a.number,COUNT(DISTINCT(b.number)) AS t_rank
FROM passing_number AS a,passing_number AS b
WHERE a.number<=b.number
GROUP BY a.number
) AS d
ON c.number=d.number
ORDER BY d.t_rank,c.id

方法2:直接使用DENSE_RANK函数找到名次,然后按照排名和id升序排序;
SELECT a.id,a.number,DENSE_RANK() OVER(ORDER BY a.number DESC) AS t_rank
FROM passing_number AS a
ORDER BY t_rank,a.id ASC

全部评论

相关推荐

2025-12-23 18:51
中南大学 Java
唉又萌混过关:是不是那种收钱盖实习章的机构?
点赞 评论 收藏
分享
2025-11-14 10:17
北京大学 财务
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务